From akpm@osdl.org Wed Nov 8 19:54:08 2006 Message-Id: <200611090353.kA93rxmp003845@shell0.pdx.osdl.net> From: Akinobu Mita Subject: pci: fix __pci_register_driver error handling To: greg@kroah.com Cc: akpm@osdl.org, akinobu.mita@gmail.com, gregkh@suse.de From: akpm@osdl.org Date: Wed, 08 Nov 2006 19:53:59 -0800 From: Akinobu Mita __pci_register_driver() error path forgot to unwind. driver_unregister() needs to be called when pci_create_newid_file() failed. Signed-off-by: Akinobu Mita Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman --- drivers/pci/pci-driver.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- gregkh-2.6.orig/drivers/pci/pci-driver.c +++ gregkh-2.6/drivers/pci/pci-driver.c @@ -445,9 +445,12 @@ int __pci_register_driver(struct pci_dri /* register with core */ error = driver_register(&drv->driver); + if (error) + return error; - if (!error) - error = pci_create_newid_file(drv); + error = pci_create_newid_file(drv); + if (error) + driver_unregister(&drv->driver); return error; }