As noted in include/linux/kernel.h: "abs() should not be used for 64-bit types (s64, u64, long long) - use abs64() for those."
Unfortunately, there are quite a number of places where abs() was used w/ 64bit values in the kernel, and the results are then silently capped to 32-bit values on 32-bit systems. This series tries to address the problematic sites I found, and then introduces a patch which modifies abs() so that the build will fail if a 64-bit type is passed to it on a 32-bit machine. I'm sure there are additional sites that will need fixing, but hopefully this will make them easy to find. Comments and feedback would be greatly appreciated! Thanks -john Cc: Andrew Morton <a...@linux-foundation.org> Cc: Ingo Molnar <mi...@kernel.org> Cc: "Steven Rostedt (Red Hat)" <rost...@goodmis.org> Cc: Peter Zijlstra <pet...@infradead.org> Cc: Masami Hiramatsu <masami.hiramatsu...@hitachi.com> Cc: Michal Nazarewicz <min...@mina86.com> Cc: Prarit Bhargava <pra...@redhat.com> Cc: Richard Cochran <richardcoch...@gmail.com> Cc: Thomas Gleixner <t...@linutronix.de> Cc: "Theodore Ts'o" <ty...@mit.edu> Cc: Andreas Dilger <adilger.ker...@dilger.ca> Cc: Dave Chinner <dchin...@redhat.com> Cc: Tejun Heo <t...@kernel.org> Cc: Joe Perches <j...@perches.com> John Stultz (5): clocksource: Fix abs() usage w/ 64bit values time: Fix abs() usage with 64-bit values. ext4: Fix abs() usage in ext4_mb_check_group_pa percpu: Fix abs() usage in percpu_counter_compare() abs(): Provide build error on passing 64bit value to abs() fs/ext4/mballoc.c | 4 ++-- include/linux/kernel.h | 3 +++ kernel/time/clocksource.c | 2 +- kernel/time/timekeeping.c | 2 +- lib/percpu_counter.c | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/