mempolicy: ERR_PTR dereference in mpol_shared_policy_init()
Subsystems (3)
PATCH 1/1 mempolicy: ERR_PTR dereference in mpol_shared_policy_init()
The original code called mpol_put(new) while "new" was an ERR_PTR.
Signed-off-by Dan Carpenter <[email protected]>
mm/mempolicy.c +2 -1
@@ -2098,7 +2098,7 @@ void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol)/* contextualize the tmpfs mount point mempolicy */ new =mpol_new (mpol->mode, mpol->flags, &mpol->w.user_nodemask);if (IS_ERR (new)) - goto put_free;/* no valid nodemask intersection */ + goto free_scratch;/* no valid nodemask intersection */ task_lock (current); ret =mpol_set_nodemask (new, &mpol->w.user_nodemask, scratch);
@@ -2114,6 +2114,7 @@ void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol) put_free:mpol_put (new);/* drop initial ref */ +free_scratch:NODEMASK_SCRATCH_FREE (scratch); } }
Quoted 3 lines · Dan Carpenter
The original code called
mpol_put(new)while "new" was anERR_PTR.Signed-off-by Dan Carpenter <[email protected]>
Acked-by David Rientjes <[email protected]>