projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a7b50ab
)
tmpfs: don't undo fallocate past its last page
author
Anthony Romano
<
[email protected]
>
Fri, 24 Jun 2016 21:48:43 +0000
(14:48 -0700)
committer
Linus Torvalds
<
[email protected]
>
Sat, 25 Jun 2016 00:23:52 +0000
(17:23 -0700)
When fallocate is interrupted it will undo a range that extends one byte
past its range of allocated pages. This can corrupt an in-use page by
zeroing out its first byte. Instead, undo using the inclusive byte
range.
Fixes: 1635f6a74152f1d ("tmpfs: undo fallocation on failure")
Link:
http://lkml.kernel.org/r/
[email protected]
Signed-off-by: Anthony Romano <
[email protected]
>
Cc: Vlastimil Babka <
[email protected]
>
Cc: Hugh Dickins <
[email protected]
>
Cc: Brandon Philips <
[email protected]
>
Cc: <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
mm/shmem.c
patch
|
blob
|
history
diff --git
a/mm/shmem.c
b/mm/shmem.c
index a36144909b2840213c087f3eb32fbd10d7c880ee..24463b67b6efa5817e7c1e806d1bf6337d300ba2 100644
(file)
--- a/
mm/shmem.c
+++ b/
mm/shmem.c
@@
-2227,7
+2227,7
@@
static long shmem_fallocate(struct file *file, int mode, loff_t offset,
/* Remove the !PageUptodate pages we added */
shmem_undo_range(inode,
(loff_t)start << PAGE_SHIFT,
- (
loff_t)index << PAGE_SHIFT
, true);
+ (
(loff_t)index << PAGE_SHIFT) - 1
, true);
goto undone;
}