From: Geert Uytterhoeven Date: Mon, 29 Oct 2007 20:21:37 +0000 (+0100) Subject: libata and bogus LBA48 drives X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=17bd9a2f4c35de29d2539a2ff6851d61be281e25;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git libata and bogus LBA48 drives A colleague noticed recent versions of Ubuntu no longer detect his 80 GB ST380020ACE drive. This drive is special in that it advertises LBA48 support, but has the lba_capacity_2 field set to zero (cfr. http://lkml.org/lkml/2004/3/30/163). Upon closer look, libata indeed doesn't seem to handle this case yet. Below is an (untested) fix. Signed-off-by: Jeff Garzik --- diff --git a/include/linux/ata.h b/include/linux/ata.h index 61535e72834d..304825b1c977 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -425,6 +425,8 @@ static inline int ata_id_has_lba48(const u16 *id) { if ((id[83] & 0xC000) != 0x4000) return 0; + if (!ata_id_u64(id, 100)) + return 0; return id[83] & (1 << 10); }