diff options
Diffstat (limited to 'mm/rmap.c')
| -rw-r--r-- | mm/rmap.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/mm/rmap.c b/mm/rmap.c index 5e3e09081164..c161a14b6a8f 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -287,6 +287,13 @@ int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)  	return 0;   enomem_failure: +	/* +	 * dst->anon_vma is dropped here otherwise its degree can be incorrectly +	 * decremented in unlink_anon_vmas(). +	 * We can safely do this because callers of anon_vma_clone() don't care +	 * about dst->anon_vma if anon_vma_clone() failed. +	 */ +	dst->anon_vma = NULL;  	unlink_anon_vmas(dst);  	return -ENOMEM;  }  |