EDAC: Properly unwind on failure path in edac_init()
edac_init() does not deallocate already allocated resources on failure path. Found by Linux Driver Verification project (linuxtesting.org). [ Boris: The unwind path functions have __exit annotation but are being used in an __init function, leading to section mismatches. Drop the section annotation and make them normal functions. ] Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Link: http://lkml.kernel.org/r/1423203162-26368-1-git-send-email-khoroshilov@ispras.ru Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:

committed by
Borislav Petkov

parent
fc7cc6b782
commit
c6b97bcf8e
@@ -112,20 +112,23 @@ static int __init edac_init(void)
|
||||
|
||||
err = edac_mc_sysfs_init();
|
||||
if (err)
|
||||
goto error;
|
||||
goto err_sysfs;
|
||||
|
||||
edac_debugfs_init();
|
||||
|
||||
/* Setup/Initialize the workq for this core */
|
||||
err = edac_workqueue_setup();
|
||||
if (err) {
|
||||
edac_printk(KERN_ERR, EDAC_MC, "init WorkQueue failure\n");
|
||||
goto error;
|
||||
edac_printk(KERN_ERR, EDAC_MC, "Failure initializing workqueue\n");
|
||||
goto err_wq;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
err_wq:
|
||||
edac_debugfs_exit();
|
||||
edac_mc_sysfs_exit();
|
||||
|
||||
err_sysfs:
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user