diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mm.h | 2 | ||||
| -rw-r--r-- | include/linux/mm_types.h | 15 | ||||
| -rw-r--r-- | include/uapi/linux/prctl.h | 3 | 
3 files changed, 19 insertions, 1 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index bd5679ddcd3..01eb01df922 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1486,7 +1486,7 @@ extern int vma_adjust(struct vm_area_struct *vma, unsigned long start,  extern struct vm_area_struct *vma_merge(struct mm_struct *,  	struct vm_area_struct *prev, unsigned long addr, unsigned long end,  	unsigned long vm_flags, struct anon_vma *, struct file *, pgoff_t, -	struct mempolicy *); +	struct mempolicy *, const char __user *);  extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *);  extern int split_vma(struct mm_struct *,  	struct vm_area_struct *, unsigned long addr, int new_below); diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index ace9a5f01c6..875ba48dd72 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -255,6 +255,10 @@ struct vm_area_struct {  	 * For areas with an address space and backing store,  	 * linkage into the address_space->i_mmap interval tree, or  	 * linkage of vma in the address_space->i_mmap_nonlinear list. +	 * +	 * For private anonymous mappings, a pointer to a null terminated string +	 * in the user process containing the name given to the vma, or NULL +	 * if unnamed.  	 */  	union {  		struct { @@ -262,6 +266,7 @@ struct vm_area_struct {  			unsigned long rb_subtree_last;  		} linear;  		struct list_head nonlinear; +		const char __user *anon_name;  	} shared;  	/* @@ -456,4 +461,14 @@ static inline cpumask_t *mm_cpumask(struct mm_struct *mm)  	return mm->cpu_vm_mask_var;  } + +/* Return the name for an anonymous mapping or NULL for a file-backed mapping */ +static inline const char __user *vma_get_anon_name(struct vm_area_struct *vma) +{ +	if (vma->vm_file) +		return NULL; + +	return vma->shared.anon_name; +} +  #endif /* _LINUX_MM_TYPES_H */ diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h index 289760f424a..253856a2a8a 100644 --- a/include/uapi/linux/prctl.h +++ b/include/uapi/linux/prctl.h @@ -149,4 +149,7 @@  #define PR_GET_TID_ADDRESS	40 +#define PR_SET_VMA		0x53564d41 +# define PR_SET_VMA_ANON_NAME		0 +  #endif /* _LINUX_PRCTL_H */  |