From: Jan Beulich Date: Fri, 7 Sep 2012 06:54:52 +0000 (+0100) Subject: x86/mm: Fix range check in tlbflush debugfs interface X-Git-Tag: upstream/snapshot3+hdmi~6602^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d4c9dbc61fe0ca042b835c6f234af12fa5f18310;hp=057237bb35a605d795fd787868a1088705f26ee5;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git 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 Cc: Alex Shi Link: http://lkml.kernel.org/r/5049B65C020000780009990C@nat28.tlf.novell.com Signed-off-by: Ingo Molnar --- diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 613cd83..a085c56 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;