Messages in this thread | | | Date | Tue, 29 Nov 2022 12:39:06 +0100 | Subject | Re: [PATCH v9 1/8] mm: Introduce memfd_restricted system call to create restricted user memory | From | David Hildenbrand <> |
| |
On 29.11.22 12:21, Kirill A. Shutemov wrote: > On Mon, Nov 28, 2022 at 06:06:32PM -0600, Michael Roth wrote: >> On Tue, Oct 25, 2022 at 11:13:37PM +0800, Chao Peng wrote: >>> From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> >>> >> >> <snip> >> >>> +static struct file *restrictedmem_file_create(struct file *memfd) >>> +{ >>> + struct restrictedmem_data *data; >>> + struct address_space *mapping; >>> + struct inode *inode; >>> + struct file *file; >>> + >>> + data = kzalloc(sizeof(*data), GFP_KERNEL); >>> + if (!data) >>> + return ERR_PTR(-ENOMEM); >>> + >>> + data->memfd = memfd; >>> + mutex_init(&data->lock); >>> + INIT_LIST_HEAD(&data->notifiers); >>> + >>> + inode = alloc_anon_inode(restrictedmem_mnt->mnt_sb); >>> + if (IS_ERR(inode)) { >>> + kfree(data); >>> + return ERR_CAST(inode); >>> + } >>> + >>> + inode->i_mode |= S_IFREG; >>> + inode->i_op = &restrictedmem_iops; >>> + inode->i_mapping->private_data = data; >>> + >>> + file = alloc_file_pseudo(inode, restrictedmem_mnt, >>> + "restrictedmem", O_RDWR, >>> + &restrictedmem_fops); >>> + if (IS_ERR(file)) { >>> + iput(inode); >>> + kfree(data); >>> + return ERR_CAST(file); >>> + } >>> + >>> + file->f_flags |= O_LARGEFILE; >>> + >>> + mapping = memfd->f_mapping; >>> + mapping_set_unevictable(mapping); >>> + mapping_set_gfp_mask(mapping, >>> + mapping_gfp_mask(mapping) & ~__GFP_MOVABLE); >> >> Is this supposed to prevent migration of pages being used for >> restrictedmem/shmem backend? > > Yes, my bad. I expected it to prevent migration, but it is not true.
Maybe add a comment that these pages are not movable and we don't want to place them into movable pageblocks (including CMA and ZONE_MOVABLE). That's the primary purpose of the GFP mask here.
-- Thanks,
David / dhildenb
| |