ide: fix ->io_32bit race in set_io_32bit()
PATCH 1/20 ide: fix ->io_32bit race in set_io_32bit()
set_io_32bit() (ide_procset_t function) can race against running PIO transfers. Fix it by using ide_spin_wait_hwgroup().
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/ide.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/ide/ide.c +6 -0
@@ -791,11 +791,17 @@ int set_io_32bit(ide_drive_t *drive, intif (arg <0 || arg >1 + (SUPPORT_VLB_SYNC <<1 ))return -EINVAL ; +if (ide_spin_wait_hwgroup (drive)) +return -EBUSY ; + drive->io_32bit = arg;#ifdef CONFIG_BLK_DEV_DTC2278 if (HWIF (drive)->chipset == ide_dtc2278)HWIF (drive)->drives[!drive->select.b.unit].io_32bit = arg;#endif /* CONFIG_BLK_DEV_DTC2278 */ + +spin_unlock_irq (&ide_lock); +return 0 ; }
Quoted 4 lines · Bartlomiej Zolnierkiewicz
set_io_32bit()(ide_procset_tfunction) can race against running PIO transfers. Fix it by usingide_spin_wait_hwgroup().Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
Acked-by Sergei Shtylyov <[email protected]>
MBR, Sergei