Skip to content

Commit 5a2d966

Browse files
Yuan CanPrashant Malani
Yuan Can
authored and
Prashant Malani
committed
platform/chrome: cros_usbpd_notify: Fix error handling in cros_usbpd_notify_init()
The following WARNING message was given when rmmod cros_usbpd_notify: Unexpected driver unregister! WARNING: CPU: 0 PID: 253 at drivers/base/driver.c:270 driver_unregister+0x8a/0xb0 Modules linked in: cros_usbpd_notify(-) CPU: 0 PID: 253 Comm: rmmod Not tainted 6.1.0-rc3 #24 ... Call Trace: <TASK> cros_usbpd_notify_exit+0x11/0x1e [cros_usbpd_notify] __x64_sys_delete_module+0x3c7/0x570 ? __ia32_sys_delete_module+0x570/0x570 ? lock_is_held_type+0xe3/0x140 ? syscall_enter_from_user_mode+0x17/0x50 ? rcu_read_lock_sched_held+0xa0/0xd0 ? syscall_enter_from_user_mode+0x1c/0x50 do_syscall_64+0x37/0x90 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP: 0033:0x7f333fe9b1b7 The reason is that the cros_usbpd_notify_init() does not check the return value of platform_driver_register(), and the cros_usbpd_notify can install successfully even if platform_driver_register() failed. Fix by checking the return value of platform_driver_register() and unregister cros_usbpd_notify_plat_driver when it failed. Fixes: ec2daf6 ("platform: chrome: Add cros-usbpd-notify driver") Signed-off-by: Yuan Can <[email protected]> Reviewed-by: Brian Norris <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Prashant Malani <[email protected]>
1 parent f9e510d commit 5a2d966

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

drivers/platform/chrome/cros_usbpd_notify.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,11 @@ static int __init cros_usbpd_notify_init(void)
239239
return ret;
240240

241241
#ifdef CONFIG_ACPI
242-
platform_driver_register(&cros_usbpd_notify_acpi_driver);
242+
ret = platform_driver_register(&cros_usbpd_notify_acpi_driver);
243+
if (ret) {
244+
platform_driver_unregister(&cros_usbpd_notify_plat_driver);
245+
return ret;
246+
}
243247
#endif
244248
return 0;
245249
}

0 commit comments

Comments
 (0)