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: next-20120910~34^2~3^2 X-Git-Url: https://git.kernelconcepts.de/?a=commitdiff_plain;ds=sidebyside;h=d4c9dbc61fe0ca042b835c6f234af12fa5f18310;p=karo-tx-linux.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 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;