Re: [PATCH v4 2/3] mm/mempolicy: add set_mempolicy_home_node syscall
From: Jonathan Corbet <corbet@lwn.net>
Date: 2021-11-10 15:18:19
Also in:
linux-mm
"Aneesh Kumar K.V" [off-list ref] writes:
This syscall can be used to set a home node for the MPOL_BIND and MPOL_PREFERRED_MANY memory policy. Users should use this syscall after setting up a memory policy for the specified range as shown below.
So I noticed one little thing as I was looking at this... [...]
+SYSCALL_DEFINE4(set_mempolicy_home_node, unsigned long, start, unsigned long, len,
+ unsigned long, home_node, unsigned long, flags)
+{
+ struct mm_struct *mm = current->mm;
+ struct vm_area_struct *vma;
+ struct mempolicy *new;
+ unsigned long vmstart;
+ unsigned long vmend;
+ unsigned long end;
+ int err = -ENOENT;
+
+ if (start & ~PAGE_MASK)
+ return -EINVAL;
+
+ len = (len + PAGE_SIZE - 1) & PAGE_MASK;
+ end = start + len;
+
+ if (end < start)
+ return -EINVAL;
+ if (end == start)
+ return 0;
+ mmap_write_lock(mm);
+ vma = find_vma(mm, start);
+ for (; vma && vma->vm_start < end; vma = vma->vm_next) {
+
+ vmstart = max(start, vma->vm_start);
+ vmend = min(end, vma->vm_end);
+ new = mpol_dup(vma_policy(vma));
+ if (IS_ERR(new)) {
+ err = PTR_ERR(new);
+ break;
+ }
+ /*
+ * Only update home node if there is an existing vma policy
+ */
+ if (!new)
+ continue;
+ new->home_node = home_node;
+ err = mbind_range(mm, vmstart, vmend, new);
+ if (err)
+ break;
+ }
+ mmap_write_unlock(mm);
+ return err;
+}You never do anything with flags; I believe you want to check and ensure that it's zero if there are no defined flags at this point? Thanks, jon