Commit 1833633803c7ef4d8f09877d3f1549cbd252f477
Committed by
Linus Torvalds
1 parent
e228929bc2
Exists in
master
and in
7 other branches
fix some conversion overflows
Fix page index to offset conversion overflows in buffer layer, ecryptfs, and ocfs2. It would be nice to convert the whole tree to page_offset, but for now just fix the bugs. Signed-off-by: Nick Piggin <npiggin@suse.de> Cc: Michael Halcrow <mhalcrow@us.ibm.com> Cc: Mark Fasheh <mark.fasheh@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 3 changed files with 4 additions and 5 deletions Side-by-side Diff
fs/buffer.c
... | ... | @@ -2221,7 +2221,7 @@ |
2221 | 2221 | lock_page(page); |
2222 | 2222 | size = i_size_read(inode); |
2223 | 2223 | if ((page->mapping != inode->i_mapping) || |
2224 | - ((page->index << PAGE_CACHE_SHIFT) > size)) { | |
2224 | + (page_offset(page) > size)) { | |
2225 | 2225 | /* page got truncated out from underneath us */ |
2226 | 2226 | goto out_unlock; |
2227 | 2227 | } |
fs/ecryptfs/mmap.c
... | ... | @@ -409,8 +409,7 @@ |
409 | 409 | if (!PageUptodate(page)) |
410 | 410 | rc = ecryptfs_do_readpage(file, page, page->index); |
411 | 411 | if (page->index != 0) { |
412 | - loff_t end_of_prev_pg_pos = | |
413 | - (((loff_t)page->index << PAGE_CACHE_SHIFT) - 1); | |
412 | + loff_t end_of_prev_pg_pos = page_offset(page) - 1; | |
414 | 413 | |
415 | 414 | if (end_of_prev_pg_pos > i_size_read(page->mapping->host)) { |
416 | 415 | rc = ecryptfs_truncate(file->f_path.dentry, |
... | ... | @@ -736,7 +735,7 @@ |
736 | 735 | goto out; |
737 | 736 | } |
738 | 737 | inode->i_blocks = lower_inode->i_blocks; |
739 | - pos = (page->index << PAGE_CACHE_SHIFT) + to; | |
738 | + pos = page_offset(page) + to; | |
740 | 739 | if (pos > i_size_read(inode)) { |
741 | 740 | i_size_write(inode, pos); |
742 | 741 | ecryptfs_printk(KERN_DEBUG, "Expanded file size to " |
fs/ocfs2/mmap.c