- To: dave@xxxxxxxxxxxxxxxxxx
- Subject: Re: [RFC][PATCH] hugetlb: fix resv_map leak in error path
- From: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
- Date: Mon, 21 May 2012 14:23:37 -0400
- Cc: cl@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, linux-mm@xxxxxxxxx, aarcange@xxxxxxxxxx, kosaki.motohiro@xxxxxxxxxxxxxx, hughd@xxxxxxxxxx, rientjes@xxxxxxxxxx, adobriyan@xxxxxxxxx, akpm@xxxxxxxxxxxxxxxxxxxx, mel@xxxxxxxxx
- Delivered-to: linux-mm-outgoing@xxxxxxxxx
- Delivered-to: int-list-linux-mm@xxxxxxxxx
- Delivered-to: linux-mm@xxxxxxxxx
- In-reply-to: <20120518184630.FF3307BD@kernel>
- User-agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1
On 5/18/2012 2:46 PM, Dave Hansen wrote:
> When called for anonymous (non-shared) mappings,
> hugetlb_reserve_pages() does a resv_map_alloc(). It depends on
> code in hugetlbfs's vm_ops->close() to release that allocation.
>
> However, in the mmap() failure path, we do a plain unmap_region()
> without the remove_vma() which actually calls vm_ops->close().
>
> This is a decent fix. This leak could get reintroduced if
> new code (say, after hugetlb_reserve_pages() in
> hugetlbfs_file_mmap()) decides to return an error. But, I think
> it would have to unroll the reservation anyway.
>
> This hasn't been extensively tested. Pretty much compile and
> boot tested along with Christoph's test case.
>
> Comments?
>
>
> Signed-off-by: Dave Hansen <dave@xxxxxxxxxxxxxxxxxx>
> ---
I don't think this is cleaner fix. but I also think we should fix the leak
asap. so Let's simple fix first.
Acked-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>
[Site Home]
[Linux ARM Kernel]
[Linux ARM]
[Linux Omap]
[Fedora ARM]
[IETF Annouce]
[Security]
[Bugtraq]
[Linux]
[Linux OMAP]
[Linux MIPS]
[ECOS]
[Tools]
[DDR & Rambus]
[Asterisk Internet PBX]
[Linux API]
[Monitors]