diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-23 21:40:33 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-23 21:40:33 -0700 |
commit | 1a8f46100b657f533ce677e79bc27c6794c91c46 (patch) | |
tree | 65788cbbd19034d01f2708f389131a291b07d58a /drivers/ata/libata-core.c | |
parent | b1b8aca480a26efb21168e311e8025a22b042591 (diff) | |
parent | b54eebd673861136291b97e409a0f248b96e74ae (diff) |
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
libata: don't check n_sectors during revalidation if zero
pata_via: Add Arima W730-K8 and other rebadgings
pata_sis: Add the FSC Amilo and friends
pata_pdc2027x: PLL detection fixes
libata: fix n_sectors failure handling during revalidation
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r-- | drivers/ata/libata-core.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 99d4fbffb0d..2ad4dda6d4a 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -3700,11 +3700,16 @@ int ata_dev_revalidate(struct ata_device *dev, unsigned int readid_flags) goto fail; /* verify n_sectors hasn't changed */ - if (dev->class == ATA_DEV_ATA && dev->n_sectors != n_sectors) { + if (dev->class == ATA_DEV_ATA && n_sectors && + dev->n_sectors != n_sectors) { ata_dev_printk(dev, KERN_INFO, "n_sectors mismatch " "%llu != %llu\n", (unsigned long long)n_sectors, (unsigned long long)dev->n_sectors); + + /* restore original n_sectors */ + dev->n_sectors = n_sectors; + rc = -ENODEV; goto fail; } |