diff options
author | 2020-04-10 12:19:02 +0200 | |
---|---|---|
committer | 2020-05-12 19:34:56 +0300 | |
commit | 6111a4f9bb189e76cda6a306074c9746ddeef04b (patch) | |
tree | bb1f2341943551f9cad590b67ad5940cbbcbc674 /drivers/block/floppy.c | |
parent | floppy: cleanup: do not iterate on current_fdc in do_floppy_init() (diff) | |
download | linux-6111a4f9bb189e76cda6a306074c9746ddeef04b.tar.gz linux-6111a4f9bb189e76cda6a306074c9746ddeef04b.tar.bz2 linux-6111a4f9bb189e76cda6a306074c9746ddeef04b.zip |
floppy: make sure to reset all FDCs upon resume()
In floppy_resume() we don't properly reinitialize all FDCs, instead
we reinitialize the current FDC once per available FDC because value
-1 is passed to user_reset_fdc(). Let's simply save the current drive
and properly reinitialize each FDC.
Link: https://lore.kernel.org/r/20200410101904.14652-1-w@1wt.eu
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Denis Efremov <efremov@linux.com>
Diffstat (limited to 'drivers/block/floppy.c')
-rw-r--r-- | drivers/block/floppy.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 8da7921659f1..b102f55dfa5d 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -4545,11 +4545,13 @@ static void floppy_device_release(struct device *dev) static int floppy_resume(struct device *dev) { int fdc; + int saved_drive; + saved_drive = current_drive; for (fdc = 0; fdc < N_FDC; fdc++) if (fdc_state[fdc].address != -1) - user_reset_fdc(-1, FD_RESET_ALWAYS, false); - + user_reset_fdc(REVDRIVE(fdc, 0), FD_RESET_ALWAYS, false); + set_fdc(saved_drive); return 0; } |