Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: sparcspkr - use platform_register/unregister_drivers()

These new helpers simplify implementing multi-driver modules and
properly handle failure to register one driver by unregistering all
previously registered drivers.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Thierry Reding and committed by
Dmitry Torokhov
d352c0e1 0eea5050

+7 -11
+7 -11
drivers/input/misc/sparcspkr.c
··· 345 345 .shutdown = sparcspkr_shutdown, 346 346 }; 347 347 348 + static struct platform_driver * const drivers[] = { 349 + &bbc_beep_driver, 350 + &grover_beep_driver, 351 + }; 352 + 348 353 static int __init sparcspkr_init(void) 349 354 { 350 - int err = platform_driver_register(&bbc_beep_driver); 351 - 352 - if (!err) { 353 - err = platform_driver_register(&grover_beep_driver); 354 - if (err) 355 - platform_driver_unregister(&bbc_beep_driver); 356 - } 357 - 358 - return err; 355 + return platform_register_drivers(drivers, ARRAY_SIZE(drivers)); 359 356 } 360 357 361 358 static void __exit sparcspkr_exit(void) 362 359 { 363 - platform_driver_unregister(&bbc_beep_driver); 364 - platform_driver_unregister(&grover_beep_driver); 360 + platform_unregister_drivers(drivers, ARRAY_SIZE(drivers)); 365 361 } 366 362 367 363 module_init(sparcspkr_init);