]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ide/ide-disk.c
ide-disk: set_addressing() fixes
[linux-2.6-omap-h63xx.git] / drivers / ide / ide-disk.c
index 01846f244b40156b3822bcb504f05f7c18b12bd5..65c499aab6641b3c45ef1e4109cc89e7fc5bfb40 100644 (file)
@@ -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;