[WATCHDOG] sc1200wdt.c pnp unregister fix.

If no devices found or invalid parameter is specified,
scl200wdt_pnp_driver is left unregistered.
It breaks global list of pnp drivers.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Signed-off-by: Andrew Morton <akpm@osdl.org>

authored by Akinobu Mita and committed by Wim Van Sebroeck 150ed8ed 5fdb51a1

+7 -2
+7 -2
drivers/char/watchdog/sc1200wdt.c
··· 392 if (io == -1) { 393 printk(KERN_ERR PFX "io parameter must be specified\n"); 394 ret = -EINVAL; 395 - goto out_clean; 396 } 397 398 #if defined CONFIG_PNP ··· 405 if (!request_region(io, io_len, SC1200_MODULE_NAME)) { 406 printk(KERN_ERR PFX "Unable to register IO port %#x\n", io); 407 ret = -EBUSY; 408 - goto out_clean; 409 } 410 411 ret = sc1200wdt_probe(); ··· 435 out_io: 436 release_region(io, io_len); 437 438 goto out_clean; 439 } 440
··· 392 if (io == -1) { 393 printk(KERN_ERR PFX "io parameter must be specified\n"); 394 ret = -EINVAL; 395 + goto out_pnp; 396 } 397 398 #if defined CONFIG_PNP ··· 405 if (!request_region(io, io_len, SC1200_MODULE_NAME)) { 406 printk(KERN_ERR PFX "Unable to register IO port %#x\n", io); 407 ret = -EBUSY; 408 + goto out_pnp; 409 } 410 411 ret = sc1200wdt_probe(); ··· 435 out_io: 436 release_region(io, io_len); 437 438 + out_pnp: 439 + #if defined CONFIG_PNP 440 + if (isapnp) 441 + pnp_unregister_driver(&scl200wdt_pnp_driver); 442 + #endif 443 goto out_clean; 444 } 445