]> git.karo-electronics.de Git - karo-tx-linux.git/commit
genhd: Make put_disk() safe for disks that have not been registered
authorBen Hutchings <ben@decadent.org.uk>
Mon, 27 Aug 2012 23:56:53 +0000 (20:56 -0300)
committerJiri Kosina <jkosina@suse.cz>
Mon, 3 Sep 2012 13:55:19 +0000 (15:55 +0200)
commitb33d002f4b6bae912463e5a66387c498aa69b6fe
tree80b3df3347fe54dab6a0c469e0fb905e0dee7b6e
parent6a15303c7b97f52e21ac51351a62d76e0ab06fdc
genhd: Make put_disk() safe for disks that have not been registered

Since commit 523e1d3 ('block: make gendisk hold a reference to its
queue'), add_disk() adds a reference to disk->queue, which is then
dropped by disk_release().  But if a disk is destroyed without being
registered through add_disk() (or if add_disk() fails at the first
hurdle) then we have a reference imbalance.

Use the GENHD_FL_UP flag to tell whether this extra reference has been
added.  Remove the incomplete workaround from the floppy driver.

Cc: stable@vger.kernel.org
Acked-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
block/genhd.c
drivers/block/floppy.c