aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <[email protected]>2012-09-07 07:54:52 +0100
committerIngo Molnar <[email protected]>2012-09-07 10:56:02 +0200
commitd4c9dbc61fe0ca042b835c6f234af12fa5f18310 (patch)
treeea2e11e59de9492a7984fc9681da99b1e4239881
parent057237bb35a605d795fd787868a1088705f26ee5 (diff)
x86/mm: Fix range check in tlbflush debugfs interface
Since the shift count settable there is used for shifting values of type "unsigned long", its value must not match or exceed BITS_PER_LONG (otherwise the shift operations are undefined). Similarly, the value must not be negative (but -1 must be permitted, as that's the value used to distinguish the case of the fine grained flushing being disabled). Signed-off-by: Jan Beulich <[email protected]> Cc: Alex Shi <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Ingo Molnar <[email protected]>
-rw-r--r--arch/x86/mm/tlb.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
index 613cd83e8c0c..a085c560b4a5 100644
--- a/arch/x86/mm/tlb.c
+++ b/arch/x86/mm/tlb.c
@@ -320,7 +320,7 @@ static ssize_t tlbflush_write_file(struct file *file,
if (kstrtos8(buf, 0, &shift))
return -EINVAL;
- if (shift > 64)
+ if (shift < -1 || shift >= BITS_PER_LONG)
return -EINVAL;
tlb_flushall_shift = shift;