forked fromtorvalds/linux
- Notifications
You must be signed in to change notification settings - Fork1
Commit045c7a3
hugetlbfs: fix offset overflow in hugetlbfs mmap
If mmap() maps a file, it can be passed an offset into the file at whichthe mapping is to start. Offset could be a negative value whenrepresented as a loff_t. The offset plus length will be used to updatethe file size (i_size) which is also a loff_t.Validate the value of offset and offset + length to make sure they donot overflow and appear as negative.Found by syzcaller with commitff8c0c5 ("mm/hugetlb.c: don't callregion_abort if region_chg fails") applied. Prior to this commit, theoverflow would still occur but we would luckily return ENOMEM.To reproduce: mmap(0, 0x2000, 0, 0x40021, 0xffffffffffffffffULL, 0x8000000000000000ULL);Resulted in, kernel BUG at mm/hugetlb.c:742! Call Trace: hugetlbfs_evict_inode+0x80/0xa0 evict+0x24a/0x620 iput+0x48f/0x8c0 dentry_unlink_inode+0x31f/0x4d0 __dentry_kill+0x292/0x5e0 dput+0x730/0x830 __fput+0x438/0x720 ____fput+0x1a/0x20 task_work_run+0xfe/0x180 exit_to_usermode_loop+0x133/0x150 syscall_return_slowpath+0x184/0x1c0 entry_SYSCALL_64_fastpath+0xab/0xadFixes:ff8c0c5 ("mm/hugetlb.c: don't call region_abort if region_chg fails")Link:http://lkml.kernel.org/r/1491951118-30678-1-git-send-email-mike.kravetz@oracle.comReported-by: Vegard Nossum <vegard.nossum@oracle.com>Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>Acked-by: Hillf Danton <hillf.zj@alibaba-inc.com>Cc: Dmitry Vyukov <dvyukov@google.com>Cc: Michal Hocko <mhocko@suse.com>Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>Signed-off-by: Andrew Morton <akpm@linux-foundation.org>Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>1 parent5b7abea commit045c7a3
1 file changed
+12
-3
lines changedOriginal file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
136 | 136 |
| |
137 | 137 |
| |
138 | 138 |
| |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
139 | 146 |
| |
140 | 147 |
| |
141 | 148 |
| |
142 | 149 |
| |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
143 | 154 |
| |
144 | 155 |
| |
145 | 156 |
| |
146 | 157 |
| |
147 | 158 |
| |
148 |
| - | |
149 |
| - | |
150 | 159 |
| |
151 | 160 |
| |
152 | 161 |
| |
| |||
155 | 164 |
| |
156 | 165 |
| |
157 | 166 |
| |
158 |
| - | |
| 167 | + | |
159 | 168 |
| |
160 | 169 |
| |
161 | 170 |
| |
|
0 commit comments
Comments
(0)