From: Ingo Molnar <mingo@kernel.org>
To: John Stultz <john.stultz@linaro.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
"Steven Rostedt (Red Hat)" <rostedt@goodmis.org>,
Peter Zijlstra <peterz@infradead.org>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Michal Nazarewicz <mina86@mina86.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: Re: [RFC][PATCH 5/5] abs(): Provide build error on passing 64bit value to abs()
Date: Tue, 15 Sep 2015 07:22:02 +0200 [thread overview]
Message-ID: <20150915052202.GB14215@gmail.com> (raw)
In-Reply-To: <1442279124-7309-6-git-send-email-john.stultz@linaro.org>
* John Stultz <john.stultz@linaro.org> wrote:
> As noted in the comment above abs():
> "abs() should not be used for 64-bit types (s64, u64, long long)
> - use abs64() for those."
>
> Unfortunately, its quite easy to pass 64-bit values to abs()
> accidentally, and the compiler provides no warning when the
> returned value is erroniously capped at 32-bits.
>
> So this patch tries to make it easier to detect when 64-bit
> values are passed to abs() by generating a build error.
>
> Obviously, since this causes build errors, this patch is last
> in the series, and I tried to fix up all of the issues I ran
> into in my build testing. But there are likely still some out
> there.
>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> Cc: Michal Nazarewicz <mina86@mina86.com>
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> ---
> include/linux/kernel.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index 5582410..6f01151 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -208,6 +208,9 @@ extern int _cond_resched(void);
> */
> #define abs(x) ({ \
> long ret; \
> + compiletime_assert( \
> + !(sizeof(typeof(x)) > sizeof(long)), \
> + "abs() should not be used for 64-bit types - use abs64()");\
> if (sizeof(x) == sizeof(long)) { \
> long __x = (x); \
> ret = (__x < 0) ? -__x : __x; \
I think this should be a compiletime_warning() - that will be visible enough.
Thanks,
Ingo
next prev parent reply other threads:[~2015-09-15 5:22 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-15 1:05 [RFC][PATCH 0/5] Fixes for abs() usage on 64bit values John Stultz
2015-09-15 1:05 ` [RFC][PATCH 1/5] clocksource: Fix abs() usage w/ " John Stultz
2015-10-02 20:57 ` [tip:timers/urgent] " tip-bot for John Stultz
2015-09-15 1:05 ` [RFC][PATCH 2/5] time: Fix abs() usage with 64-bit values John Stultz
2015-09-15 1:05 ` [RFC][PATCH 3/5] ext4: Fix abs() usage in ext4_mb_check_group_pa John Stultz
2015-09-15 1:05 ` [RFC][PATCH 4/5] percpu: Fix abs() usage in percpu_counter_compare() John Stultz
2015-09-15 1:05 ` [RFC][PATCH 5/5] abs(): Provide build error on passing 64bit value to abs() John Stultz
2015-09-15 5:22 ` Ingo Molnar [this message]
2015-09-15 23:52 ` Linus Torvalds
2015-09-16 12:57 ` [PATCH] kernel.h: make abs() work with 64-bit types Michal Nazarewicz
2015-09-18 3:12 ` John Stultz
2015-09-15 1:49 ` [RFC][PATCH 0/5] Fixes for abs() usage on 64bit values Tejun Heo
2015-09-15 3:27 ` John Stultz
2015-09-15 3:46 ` Tejun Heo
2015-09-15 12:09 ` Jeff Epler
2015-09-15 21:21 ` Andrew Morton
2015-09-15 22:54 ` Michal Nazarewicz
2015-09-15 5:20 ` Ingo Molnar
2015-09-15 23:43 ` Linus Torvalds
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150915052202.GB14215@gmail.com \
--to=mingo@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mina86@mina86.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).