• Linus Torvalds's avatar
    floppy: cancel any pending fd_timeouts before adding a new one · dab058fd
    Linus Torvalds authored
    In commit 070ad7e7 ("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: default avatarAndi Kleen <ak@linux.intel.com>
    Reported-and-tested-by: default avatarCalvin Walton <calvin.walton@kepstin.ca>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    dab058fd
floppy.c 117 KB