From: Willy Tarreau Date: Fri, 10 Apr 2020 10:19:02 +0000 (+0200) Subject: floppy: make sure to reset all FDCs upon resume() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=6111a4f9bb189e76cda6a306074c9746ddeef04b;p=linux.git 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 Signed-off-by: Denis Efremov --- diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 8da7921659f1e..b102f55dfa5dc 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; }