forked from Minki/linux
[PATCH] Fix failure paths in modules init in umem.c
If register_blkdev() or alloc-disk fail in mm_init() after pci_register_driver() succeeds, then mm_pci_driver is not unregistered properly: Cc: Philip Guo <pg@cs.stanford.edu> Signed-off-by: Neil Brown <neilb@suse.de> Cc: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9540f75b2b
commit
5a243e0e97
@ -1179,8 +1179,10 @@ static int __init mm_init(void)
|
||||
return -ENOMEM;
|
||||
|
||||
err = major_nr = register_blkdev(0, "umem");
|
||||
if (err < 0)
|
||||
if (err < 0) {
|
||||
pci_unregister_driver(&mm_pci_driver);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
for (i = 0; i < num_cards; i++) {
|
||||
mm_gendisk[i] = alloc_disk(1 << MM_SHIFT);
|
||||
@ -1207,6 +1209,7 @@ static int __init mm_init(void)
|
||||
return 0;
|
||||
|
||||
out:
|
||||
pci_unregister_driver(&mm_pci_driver);
|
||||
unregister_blkdev(major_nr, "umem");
|
||||
while (i--)
|
||||
put_disk(mm_gendisk[i]);
|
||||
|
Loading…
Reference in New Issue
Block a user