diff options
author | Gavin Shan <[email protected]> | 2012-07-31 16:46:04 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2012-07-31 18:42:49 -0700 |
commit | db36a46113e101a8aa2d6ede41e78f2eaabed3f1 (patch) | |
tree | bb438589b620dbdca16bf5918468cd56c5b19f42 | |
parent | 5b760e64a64c8940cdccd0ba6fce19a9bd010d20 (diff) |
mm/sparse: more checks on mem_section number
__section_nr() was implemented to retrieve the corresponding memory
section number according to its descriptor. It's possible that the
specified memory section descriptor doesn't exist in the global array. So
add more checking on that and report an error for a wrong case.
Signed-off-by: Gavin Shan <[email protected]>
Acked-by: David Rientjes <[email protected]>
Cc: Michal Hocko <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | mm/sparse.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/sparse.c b/mm/sparse.c index fa933f43b2c9..42ca0ea9af1b 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -130,6 +130,8 @@ int __section_nr(struct mem_section* ms) break; } + VM_BUG_ON(root_nr == NR_SECTION_ROOTS); + return (root_nr * SECTIONS_PER_ROOT) + (ms - root); } |