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

Commit 35c13753 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

ide-disk: set_addressing() fixes



* Return -EIO if arg > 0 and LBA48 is unsupported.

* No need to reset ->addressing.

* Make ->addressing a single bit flag.

Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 1ea1031c
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -686,14 +686,13 @@ static int set_addressing(ide_drive_t *drive, int arg)
	if (arg < 0 || arg > 2)
		return -EINVAL;

	drive->addressing =  0;

	if (drive->hwif->host_flags & IDE_HFLAG_NO_LBA48)
		return 0;

	if (ata_id_lba48_enabled(drive->id) == 0)
	if (arg && ((drive->hwif->host_flags & IDE_HFLAG_NO_LBA48) ||
	    ata_id_lba48_enabled(drive->id) == 0))
		return -EIO;

	if (arg == 2)
		arg = 0;

	drive->addressing = arg;

	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -509,7 +509,7 @@ struct ide_drive_s {
	unsigned sleeping	: 1;	/* 1=sleeping & sleep field valid */
	unsigned post_reset	: 1;
	unsigned udma33_warned	: 1;
	unsigned addressing	: 2;	/* 0=28-bit, 1=48-bit, 2=48-bit doing 28-bit */
	unsigned addressing	: 1;	/* 0=28-bit, 1=48-bit */
	unsigned wcache		: 1;	/* status of write cache */
	unsigned nowerr		: 1;	/* used for ignoring ATA_DF */