Messages in this thread | | | Date | Wed, 10 Apr 2024 16:37:04 +0100 | Subject | Re: [PATCH v2] ASoC: soc-card: soc-card-test: Fix some error handling in probe() | From | Richard Fitzgerald <> |
| |
On 10/4/24 16:31, Dan Carpenter wrote: > On Wed, Apr 10, 2024 at 03:43:45PM +0100, Richard Fitzgerald wrote: >> On 10/4/24 15:22, Dan Carpenter wrote: >>> Fix this reversed if statement and call put_device() before returning >>> the error code. >>> >>> Fixes: ef7784e41db7 ("ASoC: soc-card: Add KUnit test case for snd_soc_card_get_kcontrol") >>> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> >>> --- >>> v2: call put_device() >>> >>> sound/soc/soc-card-test.c | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/sound/soc/soc-card-test.c b/sound/soc/soc-card-test.c >>> index 075c52fe82e5..faf9a3d46884 100644 >>> --- a/sound/soc/soc-card-test.c >>> +++ b/sound/soc/soc-card-test.c >>> @@ -148,8 +148,10 @@ static int soc_card_test_case_init(struct kunit *test) >>> priv->card->owner = THIS_MODULE; >>> ret = snd_soc_register_card(priv->card); >>> - if (!ret) >>> + if (ret) { >>> + put_device(priv->card_dev); >>> return ret; >>> + } >>> return 0; >>> } >> >> Thanks. >> Reviewed-by: Richard Fitzgerald <rf@opensource.cirrus.com> >> >> I can see that put_device() is also missing earlier in the >> function: >> >> if (!priv->card) >> return -ENOMEM; >> >> I can send a fix for that. > > No. Let me resend. I'm sorry, this patch has not been up to proper > standards.
The same could be said for my original code here.
I suggest moving this block of code _before_ the kunit_device_register() so there's no need to put_device() if the alloc fails:
priv->card = kunit_kzalloc(test, sizeof(*priv->card), GFP_KERNEL); if (!priv->card) return -ENOMEM;
Also I should fix Smatch to warn about missing put_device() > calls to prevent this sort of thing going forward. > > regards, > dan carpenter
| |