diff options
author | Maxim Levitsky <maximlevitsky@gmail.com> | 2010-07-28 11:53:16 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2010-08-06 04:20:47 -0400 |
commit | dba76c033f1b88b6eb0fa697b824f954b11f8a97 (patch) | |
tree | 2417e535c570a84efb4073efa3712fa4d99e81f5 /drivers/mtd/mtd_blkdevs.c | |
parent | ef41e1bb11fc21acad35c8c3b673fe9f2f29d819 (diff) |
mtd: blkdevs: fix crash related to sysfs attributes.
Remove the attributes group before disk to avoid use after free
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd/mtd_blkdevs.c')
-rw-r--r-- | drivers/mtd/mtd_blkdevs.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c index a6bb5863e8f3..89e07e5af577 100644 --- a/drivers/mtd/mtd_blkdevs.c +++ b/drivers/mtd/mtd_blkdevs.c | |||
@@ -410,13 +410,14 @@ int del_mtd_blktrans_dev(struct mtd_blktrans_dev *old) | |||
410 | BUG(); | 410 | BUG(); |
411 | } | 411 | } |
412 | 412 | ||
413 | /* Stop new requests to arrive */ | ||
414 | del_gendisk(old->disk); | ||
415 | |||
416 | if (old->disk_attributes) | 413 | if (old->disk_attributes) |
417 | sysfs_remove_group(&disk_to_dev(old->disk)->kobj, | 414 | sysfs_remove_group(&disk_to_dev(old->disk)->kobj, |
418 | old->disk_attributes); | 415 | old->disk_attributes); |
419 | 416 | ||
417 | /* Stop new requests to arrive */ | ||
418 | del_gendisk(old->disk); | ||
419 | |||
420 | |||
420 | /* Stop the thread */ | 421 | /* Stop the thread */ |
421 | kthread_stop(old->thread); | 422 | kthread_stop(old->thread); |
422 | 423 | ||