Re: [PATCH] mm/mempolicy: fix use after free when calling get_mempolicy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



+ stable@xxxxxxxxxxxxxxx
On 2017/8/16 10:13, zhong jiang wrote:
> I hit an use after free issue by executing trinity. and repoduce it
> with KASAN enabled. The related call trace is as follows.
>
> BUG: KASan: use after free in SyS_get_mempolicy+0x3c8/0x960 at addr ffff8801f582d766
> Read of size 2 by task syz-executor1/798
>
> INFO: Allocated in mpol_new.part.2+0x74/0x160 age=3 cpu=1 pid=799
> __slab_alloc+0x768/0x970
> kmem_cache_alloc+0x2e7/0x450
> mpol_new.part.2+0x74/0x160
> mpol_new+0x66/0x80
> SyS_mbind+0x267/0x9f0
> system_call_fastpath+0x16/0x1b
> INFO: Freed in __mpol_put+0x2b/0x40 age=4 cpu=1 pid=799
> __slab_free+0x495/0x8e0
> kmem_cache_free+0x2f3/0x4c0
> __mpol_put+0x2b/0x40
> SyS_mbind+0x383/0x9f0
> system_call_fastpath+0x16/0x1b
> INFO: Slab 0xffffea0009cb8dc0 objects=23 used=8 fp=0xffff8801f582de40 flags=0x200000000004080
> INFO: Object 0xffff8801f582d760 @offset=5984 fp=0xffff8801f582d600
>
> Bytes b4 ffff8801f582d750: ae 01 ff ff 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a  ........ZZZZZZZZ
> Object ffff8801f582d760: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
> Object ffff8801f582d770: 6b 6b 6b 6b 6b 6b 6b a5                          kkkkkkk.
> Redzone ffff8801f582d778: bb bb bb bb bb bb bb bb                          ........
> Padding ffff8801f582d8b8: 5a 5a 5a 5a 5a 5a 5a 5a                          ZZZZZZZZ
> Memory state around the buggy address:
> ffff8801f582d600: fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc fc
> ffff8801f582d680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>> ffff8801f582d700: fc fc fc fc fc fc fc fc fc fc fc fc fb fb fb fc
> when calling get_mempolicy from userspace, it only hold the mmap_sem
> and increase the shared pol count, the unshared pol is not be increased.
> it premature release the mmap_sem, it will result in the related mempolicy
> maybe had freed by mbind. then, the issue will trigger.
>
> The patch fix the issue by removing the premature release. it will safe
> access the mempolicy. The issue will leave.
>
> Signed-off-by: zhong jiang <zhongjiang@xxxxxxxxxx>
> ---
>  mm/mempolicy.c | 5 -----
>  1 file changed, 5 deletions(-)
>
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index d911fa5..618ab12 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -861,11 +861,6 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask,
>  		*policy |= (pol->flags & MPOL_MODE_FLAGS);
>  	}
>  
> -	if (vma) {
> -		up_read(&current->mm->mmap_sem);
> -		vma = NULL;
> -	}
> -
>  	err = 0;
>  	if (nmask) {
>  		if (mpol_store_user_nodemask(pol)) {





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]