From: Vivek Goyal Date: Wed, 8 Feb 2012 19:03:38 +0000 (+0100) Subject: floppy: Cleanup disk->queue before caling put_disk() if add_disk() was never called X-Git-Tag: v3.2.27~69 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5dd68ebb5ee6c2defe90afd9ef98dca7e5a70b7;p=pandora-kernel.git floppy: Cleanup disk->queue before caling put_disk() if add_disk() was never called commit 3f9a5aabd0a9fe0e0cd308506f48963d79169aa7 upstream. add_disk() takes gendisk reference on request queue. If driver failed during initialization and never called add_disk() then that extra reference is not taken. That reference is put in put_disk(). floppy driver allocates the disk, allocates queue, sets disk->queue and then relizes that floppy controller is not present. It tries to tear down everything and tries to put a reference down in put_disk() which was never taken. In such error cases cleanup disk->queue before calling put_disk() so that we never try to put down a reference which was never taken in first place. Reported-and-tested-by: Suresh Jayaraman Tested-by: Dirk Gouders Signed-off-by: Vivek Goyal Acked-by: Tejun Heo Signed-off-by: Jens Axboe Signed-off-by: Ben Hutchings --- Reading git-diff-tree failed