Thread (10 messages) 10 messages, 3 authors, 2014-09-22

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

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help