Prev: [98/98] MIPS: uasm: Add OR instruction.
Next: [86/98] V4L/DVB: budget: Oops: "BUG: unable to handle kernel NULL pointer dereference"
From: Greg KH on 10 May 2010 19:10 2.6.32-stable review patch. If anyone has any objections, please let us know. ------------------ From: Mark Lord <kernel(a)teksavvy.com> commit 45c4d015a92f72ec47acd0c7557abdc0c8a6499d upstream. Most drives from Seagate, Hitachi, and possibly other brands, do not allow LBA28 access to sector number 0x0fffffff (2^28 - 1). So instead use LBA48 for such accesses. This bug could bite a lot of systems, especially when the user has taken care to align partitions to 4KB boundaries. On misaligned systems, it is less likely to be encountered, since a 4KB read would end at 0x10000000 rather than at 0x0fffffff. Signed-off-by: Mark Lord <mlord(a)pobox.com> Signed-off-by: Jeff Garzik <jgarzik(a)redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh(a)suse.de> --- include/linux/ata.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -1000,8 +1000,8 @@ static inline int ata_ok(u8 status) static inline int lba_28_ok(u64 block, u32 n_block) { - /* check the ending block number */ - return ((block + n_block) < ((u64)1 << 28)) && (n_block <= 256); + /* check the ending block number: must be LESS THAN 0x0fffffff */ + return ((block + n_block) < ((1 << 28) - 1)) && (n_block <= 256); } static inline int lba_48_ok(u64 block, u32 n_block) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |