mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
mm: refuse wrapped vm_brk requests
The vm_brk() alignment calculations should refuse to overflow. The ELF loader depending on this, but it has been fixed now. No other unsafe callers have been found. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Kees Cook <[email protected]> Reported-by: Hector Marco-Gisbert <[email protected]> Cc: Ismael Ripoll Ripoll <[email protected]> Cc: Alexander Viro <[email protected]> Cc: "Kirill A. Shutemov" <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Chen Gang <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Konstantin Khlebnikov <[email protected]> Cc: Andrea Arcangeli <[email protected]> Cc: Andrey Ryabinin <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
0036d1f7eb
commit
ba093a6d93
1 changed files with 5 additions and 3 deletions
|
|
@ -2653,16 +2653,18 @@ static inline void verify_mm_writelocked(struct mm_struct *mm)
|
|||
* anonymous maps. eventually we may be able to do some
|
||||
* brk-specific accounting here.
|
||||
*/
|
||||
static int do_brk(unsigned long addr, unsigned long len)
|
||||
static int do_brk(unsigned long addr, unsigned long request)
|
||||
{
|
||||
struct mm_struct *mm = current->mm;
|
||||
struct vm_area_struct *vma, *prev;
|
||||
unsigned long flags;
|
||||
unsigned long flags, len;
|
||||
struct rb_node **rb_link, *rb_parent;
|
||||
pgoff_t pgoff = addr >> PAGE_SHIFT;
|
||||
int error;
|
||||
|
||||
len = PAGE_ALIGN(len);
|
||||
len = PAGE_ALIGN(request);
|
||||
if (len < request)
|
||||
return -ENOMEM;
|
||||
if (!len)
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue