On Tue, Jul 05, 2022 at 11:21:20PM +0000, Kuninori Morimoto wrote:
Hi Uwe
Thank you for your patch
for_each_rsnd_dai(rdai, priv, i) {
ret |= rsnd_dai_call(remove, &rdai->playback, priv);
ret |= rsnd_dai_call(remove, &rdai->capture, priv);
int ret;
ret = rsnd_dai_call(remove, &rdai->playback, priv);
if (ret)
dev_warn(&pdev->dev, "Failed to remove playback dai #%d\n", i);
ret = rsnd_dai_call(remove, &rdai->capture, priv);
if (ret)
dev_warn(&pdev->dev, "Failed to remove capture dai #%d\n", i);
}
for (i = 0; i < ARRAY_SIZE(remove_func); i++) remove_func[i](priv);
- return ret;
- return 0;
}
I think we want to get return error ?
The motivation of my patch is to make the remove function return 0 and the eventual goal is to make the remove callback return void. The difference today between returning 0 and returning an error is only that the core emits an error message in the error case. In both cases the device is removed. See drivers/base/platform.c:platform_remove().
The reason why it was using |= is that it should call all function without break even though it was error
It's right to call all cleanup functions also if some of them fail. But returning an error is useless.
Best regards Uwe