2022-11-10 07:40:15

by Chen Zhongjin

[permalink] [raw]
Subject: [PATCH] media: vimc: Fix wrong function called when vimc_init() fails

In vimc_init(), when platform_driver_register(&vimc_pdrv) fails,
platform_driver_unregister(&vimc_pdrv) is wrongly called rather than
platform_device_unregister(&vimc_pdev), which causes kernel warning:

Unexpected driver unregister!
WARNING: CPU: 1 PID: 14517 at drivers/base/driver.c:270 driver_unregister+0x8f/0xb0
RIP: 0010:driver_unregister+0x8f/0xb0
Call Trace:
<TASK>
vimc_init+0x7d/0x1000 [vimc]
do_one_initcall+0xd0/0x4e0
do_init_module+0x1cf/0x6b0
load_module+0x65c2/0x7820

Fixes: 4a29b7090749 ("[media] vimc: Subdevices as modules")
Signed-off-by: Chen Zhongjin <[email protected]>
---
drivers/media/test-drivers/vimc/vimc-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/test-drivers/vimc/vimc-core.c b/drivers/media/test-drivers/vimc/vimc-core.c
index 2ae7a0f11ebf..e82cfa5ffbf4 100644
--- a/drivers/media/test-drivers/vimc/vimc-core.c
+++ b/drivers/media/test-drivers/vimc/vimc-core.c
@@ -433,7 +433,7 @@ static int __init vimc_init(void)
if (ret) {
dev_err(&vimc_pdev.dev,
"platform driver registration failed (err=%d)\n", ret);
- platform_driver_unregister(&vimc_pdrv);
+ platform_device_unregister(&vimc_pdev);
return ret;
}

--
2.17.1



2022-11-10 17:10:25

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH] media: vimc: Fix wrong function called when vimc_init() fails

On 11/10/22 00:26, Chen Zhongjin wrote:
> In vimc_init(), when platform_driver_register(&vimc_pdrv) fails,
> platform_driver_unregister(&vimc_pdrv) is wrongly called rather than
> platform_device_unregister(&vimc_pdev), which causes kernel warning:
>
> Unexpected driver unregister!
> WARNING: CPU: 1 PID: 14517 at drivers/base/driver.c:270 driver_unregister+0x8f/0xb0
> RIP: 0010:driver_unregister+0x8f/0xb0
> Call Trace:
> <TASK>
> vimc_init+0x7d/0x1000 [vimc]
> do_one_initcall+0xd0/0x4e0
> do_init_module+0x1cf/0x6b0
> load_module+0x65c2/0x7820
>
> Fixes: 4a29b7090749 ("[media] vimc: Subdevices as modules")
> Signed-off-by: Chen Zhongjin <[email protected]>
> ---
> drivers/media/test-drivers/vimc/vimc-core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/test-drivers/vimc/vimc-core.c b/drivers/media/test-drivers/vimc/vimc-core.c
> index 2ae7a0f11ebf..e82cfa5ffbf4 100644
> --- a/drivers/media/test-drivers/vimc/vimc-core.c
> +++ b/drivers/media/test-drivers/vimc/vimc-core.c
> @@ -433,7 +433,7 @@ static int __init vimc_init(void)
> if (ret) {
> dev_err(&vimc_pdev.dev,
> "platform driver registration failed (err=%d)\n", ret);
> - platform_driver_unregister(&vimc_pdrv);
> + platform_device_unregister(&vimc_pdev);
> return ret;
> }
>

Good catch. Thanks for fixing it. Now applied for next rc.

https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux.git/?h=vimc

thanks,
-- Shuah