]> git.baikalelectronics.ru Git - kernel.git/commit
floppy: cancel any pending fd_timeouts before adding a new one
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Jul 2012 22:51:22 +0000 (15:51 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Jul 2012 22:51:22 +0000 (15:51 -0700)
commit2b9056e1e049bf03f73630bc85d68a988d5f4e74
tree33963e3af2b40b925eda0baf29bd2fd2ccafca4f
parent2012423155c110d1e4edc80a4d6cf1de4a526050
floppy: cancel any pending fd_timeouts before adding a new one

In commit d70c8f73351f ("floppy: convert to delayed work and
single-thread wq") the 'fd_timeout' timer was converted to a delayed
work.  However, the "del_timer(&fd_timeout)" was lost in the process,
and any previous pending timeouts would stay active when we then
re-queued the timeout.

This resulted in the floppy probe sequence having a (stale) 20s timeout
rather than the intended 3s timeout, and thus made booting with the
floppy driver (but no actual floppy controller) take much longer than it
should.

Of course, there's little reason for most people to compile the floppy
driver into the kernel at all, which is why most people never noticed.

Canceling the delayed work where we used to do the del_timer() fixes the
issue, and makes the floppy probing use the proper new timeout instead.
The three second timeout is still very wasteful, but better than the 20s
one.

Reported-and-tested-by: Andi Kleen <ak@linux.intel.com>
Reported-and-tested-by: Calvin Walton <calvin.walton@kepstin.ca>
Cc: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/block/floppy.c