"Aneesh Kumar K.V" <aneesh.kumar@xxxxxxxxxxxxx> 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