diff options
Diffstat (limited to 'mm/mmap.c')
-rw-r--r-- | mm/mmap.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -1358,6 +1358,9 @@ static inline u64 file_mmap_size_max(struct file *file, struct inode *inode) | |||
1358 | if (S_ISBLK(inode->i_mode)) | 1358 | if (S_ISBLK(inode->i_mode)) |
1359 | return MAX_LFS_FILESIZE; | 1359 | return MAX_LFS_FILESIZE; |
1360 | 1360 | ||
1361 | if (S_ISSOCK(inode->i_mode)) | ||
1362 | return MAX_LFS_FILESIZE; | ||
1363 | |||
1361 | /* Special "we do even unsigned file positions" case */ | 1364 | /* Special "we do even unsigned file positions" case */ |
1362 | if (file->f_mode & FMODE_UNSIGNED_OFFSET) | 1365 | if (file->f_mode & FMODE_UNSIGNED_OFFSET) |
1363 | return 0; | 1366 | return 0; |
@@ -2274,12 +2277,9 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, | |||
2274 | if (vma) { | 2277 | if (vma) { |
2275 | *pprev = vma->vm_prev; | 2278 | *pprev = vma->vm_prev; |
2276 | } else { | 2279 | } else { |
2277 | struct rb_node *rb_node = mm->mm_rb.rb_node; | 2280 | struct rb_node *rb_node = rb_last(&mm->mm_rb); |
2278 | *pprev = NULL; | 2281 | |
2279 | while (rb_node) { | 2282 | *pprev = rb_node ? rb_entry(rb_node, struct vm_area_struct, vm_rb) : NULL; |
2280 | *pprev = rb_entry(rb_node, struct vm_area_struct, vm_rb); | ||
2281 | rb_node = rb_node->rb_right; | ||
2282 | } | ||
2283 | } | 2283 | } |
2284 | return vma; | 2284 | return vma; |
2285 | } | 2285 | } |