madvise.c (a38358c934f66bdff12db762998b88038d7bc44b) madvise.c (d09e8ca6cb93bb4b97517a18fbbf7eccb0e9ff43)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * linux/mm/madvise.c
4 *
5 * Copyright (C) 1999 Linus Torvalds
6 * Copyright (C) 2002 Christoph Hellwig
7 */
8

--- 81 unchanged lines hidden (view full) ---

90 container_of(kref, struct anon_vma_name, kref);
91 kfree(anon_name);
92}
93
94struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
95{
96 mmap_assert_locked(vma->vm_mm);
97
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * linux/mm/madvise.c
4 *
5 * Copyright (C) 1999 Linus Torvalds
6 * Copyright (C) 2002 Christoph Hellwig
7 */
8

--- 81 unchanged lines hidden (view full) ---

90 container_of(kref, struct anon_vma_name, kref);
91 kfree(anon_name);
92}
93
94struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
95{
96 mmap_assert_locked(vma->vm_mm);
97
98 if (vma->vm_file)
99 return NULL;
100
101 return vma->anon_name;
102}
103
104/* mmap_lock should be write-locked */
105static int replace_anon_vma_name(struct vm_area_struct *vma,
106 struct anon_vma_name *anon_name)
107{
108 struct anon_vma_name *orig_name = anon_vma_name(vma);

--- 69 unchanged lines hidden (view full) ---

178 return error;
179 }
180
181success:
182 /*
183 * vm_flags is protected by the mmap_lock held in write mode.
184 */
185 vma->vm_flags = new_flags;
98 return vma->anon_name;
99}
100
101/* mmap_lock should be write-locked */
102static int replace_anon_vma_name(struct vm_area_struct *vma,
103 struct anon_vma_name *anon_name)
104{
105 struct anon_vma_name *orig_name = anon_vma_name(vma);

--- 69 unchanged lines hidden (view full) ---

175 return error;
176 }
177
178success:
179 /*
180 * vm_flags is protected by the mmap_lock held in write mode.
181 */
182 vma->vm_flags = new_flags;
186 if (!vma->vm_file) {
183 if (!vma->vm_file || vma_is_anon_shmem(vma)) {
187 error = replace_anon_vma_name(vma, anon_name);
188 if (error)
189 return error;
190 }
191
192 return 0;
193}
194

--- 1073 unchanged lines hidden (view full) ---

1268static int madvise_vma_anon_name(struct vm_area_struct *vma,
1269 struct vm_area_struct **prev,
1270 unsigned long start, unsigned long end,
1271 unsigned long anon_name)
1272{
1273 int error;
1274
1275 /* Only anonymous mappings can be named */
184 error = replace_anon_vma_name(vma, anon_name);
185 if (error)
186 return error;
187 }
188
189 return 0;
190}
191

--- 1073 unchanged lines hidden (view full) ---

1265static int madvise_vma_anon_name(struct vm_area_struct *vma,
1266 struct vm_area_struct **prev,
1267 unsigned long start, unsigned long end,
1268 unsigned long anon_name)
1269{
1270 int error;
1271
1272 /* Only anonymous mappings can be named */
1276 if (vma->vm_file)
1273 if (vma->vm_file && !vma_is_anon_shmem(vma))
1277 return -EBADF;
1278
1279 error = madvise_update_vma(vma, prev, start, end, vma->vm_flags,
1280 (struct anon_vma_name *)anon_name);
1281
1282 /*
1283 * madvise() returns EAGAIN if kernel resources, such as
1284 * slab, are temporarily unavailable.

--- 230 unchanged lines hidden ---
1274 return -EBADF;
1275
1276 error = madvise_update_vma(vma, prev, start, end, vma->vm_flags,
1277 (struct anon_vma_name *)anon_name);
1278
1279 /*
1280 * madvise() returns EAGAIN if kernel resources, such as
1281 * slab, are temporarily unavailable.

--- 230 unchanged lines hidden ---