Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 644a9d76 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

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().

Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent bbe4d6d8
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -800,11 +800,17 @@ int set_io_32bit(ide_drive_t *drive, int arg)
	if (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;
}