mmap: protect from stack expantion into low vm addresses
Subsystems (3)
PATCH 1/3 mmap: protect from stack expantion into low vm addresses
Add security checks to make sure we are not attempting to expand the stack into memory protected by mmap_min_addr
---
** Be very careful applying/rediffing this patch. Standard 3 lines of context from git diff will misapply the first hunk to expand_upwards instead of properly in expand_downwards. This patch was generated using -U 4 to make sure it applies in the correct place. **
mm/mmap.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
mm/mmap.c +6 -2
@@ -1614,17 +1614,21 @@ static inline int expand_downwards(struc* so that the anon_vma locking is not a noop. */ if (unlikely (anon_vma_prepare (vma)))return -ENOMEM ; + + address &=PAGE_MASK ; + error =security_file_mmap (0 ,0 ,0 ,0 , address,1 ); +if (error) +return error; +anon_vma_lock (vma);/* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_sem in read mode. We need the * anon_vma lock to serialize against concurrent expand_stacks. */ - address &=PAGE_MASK ; - error =0 ;/* Somebody else might have raced and expanded it already */ if (address < vma->vm_start) {unsigned long size, grow;
--
This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to [email protected] with the words "unsubscribe selinux" without quotes as the message.
Quoted 4 lines · Eric Paris
Add security checks to make sure we are not attempting to expand the stack into memory protected by
mmap_min_addrSigned-off-by Eric Paris <[email protected]>
Please include the LSMs list in the CC line (added again) for posts relating to security.
Applied togit://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6.git#for-akpm
Quoted 6 lines
---
** Be very careful applying/rediffing this patch. Standard 3 lines of context from git diff will misapply the first hunk to
expand_upwardsinstead of properly inexpand_downwards. This patch was generated using -U 4 to make sure it applies in the correct place. **
Seems to have applied correctly for me.
Quoted 32 lines
mm/mmap.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)mm/mmap.c +6
-2@@ -1614,17 +1614,21 @@ static inline int expand_downwards(struc* so that the anon_vma locking is not a noop. */ if (unlikely (anon_vma_prepare (vma)))return -ENOMEM ; + + address &=PAGE_MASK ; + error =security_file_mmap (0 ,0 ,0 ,0 , address,1 ); +if (error) +return error; +anon_vma_lock (vma);/* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_sem in read mode. We need the * anon_vma lock to serialize against concurrent expand_stacks. */ - address &=PAGE_MASK ; - error =0 ;/* Somebody else might have raced and expanded it already */ if (address < vma->vm_start) {unsigned long size, grow;
Signature · 7 lines
James Morris <[email protected]> -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to [email protected] with the words "unsubscribe selinux" without quotes as the message.