Current memory policy code has some confusing and ambiguous part about MPOL_LOCAL policy, as it is handled as a faked MPOL_PREFERRED one, and there are many places having to distinguish them. Also the nodemask intersection check needs cleanup to be more explicit for OOM use, and handle MPOL_INTERLEAVE correctly. This patchset cleans up these and unifies the parameter sanity check for mbind() and set_mempolicy(), which helps to make further changes easier (notably MPOL_PREFERRED_MANY) The patchset has been run with some sanity test like 'stress-ng' and 'ltp', and no problem found. Thanks, Feng Changelogs: v4: * fix a problem in mpol_set_nodemask() (Michal Hocko) * update cover-letter and commit log (Andrew/Michal) * add Acked-by info v3: * fix logic of mpol_rebind_preferred() (Michal Hocko) v2: * rename mempolicy_nodemask_intersects() to mempolicy_in_oom_domain() and correct commit log (Michal Hocko) * change the mpol syscall param sanity check (Michal Hocko) * combine the 3/4 and 4/4 in v1 into one patch, and further clean the logic (Michal Hocko) v1: * use helper func instead of macro for patch 2/4 (David Rientjes) * fix a possible null pointer case in patch 3/4 * update commit log for 1/4 RFC v2: * add for oom check fix patch 1/4 * add the unification patch for mpol preprocess 2/4 Feng Tang (3): mm/mempolicy: cleanup nodemask intersection check for oom mm/mempolicy: don't handle MPOL_LOCAL like a fake MPOL_PREFERRED policy mm/mempolicy: unify the parameter sanity check for mbind and set_mempolicy include/linux/mempolicy.h | 2 +- include/uapi/linux/mempolicy.h | 1 - mm/mempolicy.c | 213 ++++++++++++++++++----------------------- mm/oom_kill.c | 2 +- 4 files changed, 94 insertions(+), 124 deletions(-) -- 2.7.4