diff options
author | Mathieu Desnoyers <[email protected]> | 2022-12-15 14:46:21 -0500 |
---|---|---|
committer | Andrew Morton <[email protected]> | 2022-12-21 14:31:51 -0800 |
commit | 38ce7c9bdfc228c14d7621ba36d3eebedd9d4f76 (patch) | |
tree | 698c4511f0ca0cfd5168a0b55052d2d5a252ef7c | |
parent | 6f12be792fde994ed934168f93c2a0d2a0cf0bc5 (diff) |
mm/mempolicy: fix memory leak in set_mempolicy_home_node system call
When encountering any vma in the range with policy other than MPOL_BIND or
MPOL_PREFERRED_MANY, an error is returned without issuing a mpol_put on
the policy just allocated with mpol_dup().
This allows arbitrary users to leak kernel memory.
Link: https://lkml.kernel.org/r/[email protected]
Fixes: c6018b4b2549 ("mm/mempolicy: add set_mempolicy_home_node syscall")
Signed-off-by: Mathieu Desnoyers <[email protected]>
Reviewed-by: Randy Dunlap <[email protected]>
Reviewed-by: "Huang, Ying" <[email protected]>
Reviewed-by: Aneesh Kumar K.V <[email protected]>
Acked-by: Michal Hocko <[email protected]>
Cc: Aneesh Kumar K.V <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Feng Tang <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Mike Kravetz <[email protected]>
Cc: Randy Dunlap <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Dan Williams <[email protected]>
Cc: Huang Ying <[email protected]>
Cc: <[email protected]> [5.17+]
Signed-off-by: Andrew Morton <[email protected]>
-rw-r--r-- | mm/mempolicy.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 61aa9aedb728..02c8a712282f 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1540,6 +1540,7 @@ SYSCALL_DEFINE4(set_mempolicy_home_node, unsigned long, start, unsigned long, le * the home node for vmas we already updated before. */ if (new->mode != MPOL_BIND && new->mode != MPOL_PREFERRED_MANY) { + mpol_put(new); err = -EOPNOTSUPP; break; } |