Re: [PATCH] Fix nasty 32-bit overflow bug in buffer i/o code.
From: Anton Altaparmakov <hidden>
Date: 2014-09-22 15:29:56
Also in:
linux-fsdevel, lkml
From: Anton Altaparmakov <hidden>
Date: 2014-09-22 15:29:56
Also in:
linux-fsdevel, lkml
Hi Linus, On 22 Sep 2014, at 16:18, Linus Torvalds [off-list ref] wrote:
On Sun, Sep 21, 2014 at 5:53 PM, Anton Altaparmakov [off-list ref] wrote:quoted
This patch fixes this issue by type casting "index" to sector_t before doing the left shift.Ugh. Does the simpler patch to just pass in "block" work as well?
That doesn't work because nothing rounds down "block" to the first block in the page and init_page_buffers() requires "block" to be the first block in the page. The shift right followed by shift left achieves the "rounding down" required. You could do "block & ~(sector_t)(size - 1)" instead of "(sector_t)index << sizebits" if you prefer but not sure that is an improvement! Best regards, Anton
Linus <patch.diff>
-- Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @) University of Cambridge Information Services, Roger Needham Building 7 JJ Thomson Avenue, Cambridge, CB3 0RB, UK