kernel/sys.c: compat sysinfo syscall: fix undefined behavior
authorScotty Bauer <sbauer@eng.utah.edu>
Thu, 9 Oct 2014 22:30:26 +0000 (15:30 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 10 Oct 2014 02:26:04 +0000 (22:26 -0400)
Fix undefined behavior and compiler warning by replacing right shift 32
with upper_32_bits macro

Signed-off-by: Scotty Bauer <sbauer@eng.utah.edu>
Cc: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/sys.c

index 037fd76..dfce4de 100644 (file)
@@ -2330,7 +2330,7 @@ COMPAT_SYSCALL_DEFINE1(sysinfo, struct compat_sysinfo __user *, info)
        /* Check to see if any memory value is too large for 32-bit and scale
         *  down if needed
         */
-       if ((s.totalram >> 32) || (s.totalswap >> 32)) {
+       if (upper_32_bits(s.totalram) || upper_32_bits(s.totalswap)) {
                int bitcount = 0;
 
                while (s.mem_unit < PAGE_SIZE) {