On Fri, Oct 31, 2008 at 1:49 AM, Jeff Garzik <jeff@xxxxxxxxxx> wrote:Notes:<snip>
1) 1.5TB drive fix from Roland
2) Tejun's sata_via brings a non-working via configuration thanks to a
new facility also being used in recent (ICH9/10) ata_piix.
Change is longer than one might like, but it accurately describes the
hardware now, the previous stuff wasn't working, and the newly added
support code shouldn't touch non-broken VIA controllers.
Please pull from 'upstream-linus' branch of
master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git upstream-linus
to receive the following updates:
drivers/ata/ata_piix.c | 1 -
drivers/ata/libata-core.c | 11 +++-
drivers/ata/sata_via.c | 155 +++++++++++++++++++++++++++++++++++++++++----
include/linux/libata.h | 1 +
4 files changed, 152 insertions(+), 16 deletions(-)
Jens Axboe (1):
libata: add whitelist for devices with known good pata-sata bridges
Randy Dunlap (1):
ATA: remove excess kernel-doc notation
Roland Dreier (1):
libata: Avoid overflow in ata_tf_to_lba48() when tf->hba_lbal > 127
Tejun Heo (1):
sata_via: fix support for 5287
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c<snip>
index 2ff633c..82af701 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1268,7 +1268,7 @@ u64 ata_tf_to_lba48(const struct ata_taskfile *tf)
sectors |= ((u64)(tf->hob_lbah & 0xff)) << 40;
sectors |= ((u64)(tf->hob_lbam & 0xff)) << 32;
- sectors |= (tf->hob_lbal & 0xff) << 24;
+ sectors |= ((u64)(tf->hob_lbal & 0xff)) << 24;
sectors |= (tf->lbah & 0xff) << 16;
sectors |= (tf->lbam & 0xff) << 8;
sectors |= (tf->lbal & 0xff);
That looks really serious.
What happens with all previous / stable kernels when connecting up a
1.5TB drive and the user tries to use the last portion of the drive?