From: Oleg Nesterov <oleg@redhat.com>
To: Josh Triplett <josh@joshtriplett.org>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Richard Weinberger <richard@nod.at>,
Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
sparse@chrisli.org, Mark Rustad <mark.d.rustad@intel.com>,
linux-sparse@vger.kernel.org, linux-kernel@vger.kernel.org,
Geert Uytterhoeven <geert@linux-m68k.org>,
Brian Norris <computersforpeace@gmail.com>
Subject: [PATCH 1/1] signal: use BUILD_BUG() instead of _NSIG_WORDS_is_unsupported_size()
Date: Sun, 21 Sep 2014 18:43:06 +0200 [thread overview]
Message-ID: <20140921164306.GB16744@redhat.com> (raw)
In-Reply-To: <20140921164243.GA16744@redhat.com>
Kill _NSIG_WORDS_is_unsupported_size(), use BUILD_BUG() instead.
This simplifies the code, avoids the nested-externs warnings, and
this way we do not defer the problem to linker.
Also, fix the indentation in _SIG_SET_BINOP() and _SIG_SET_OP().
Note: this patch assumes that the code like "if (0) BUILD_BUG();"
is valid. If not (say __compiletime_error() is not defined and thus
__compiletime_error_fallback() uses a negative array) we should fix
BUILD_BUG() and/or BUILD_BUG_ON_MSG(). This code should be fine by
definition, this is the documented purpose of BUILD_BUG().
Reported-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
---
include/linux/signal.h | 28 ++++++++++++----------------
1 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/include/linux/signal.h b/include/linux/signal.h
index 750196f..14acfd5 100644
--- a/include/linux/signal.h
+++ b/include/linux/signal.h
@@ -67,7 +67,6 @@ static inline int sigismember(sigset_t *set, int _sig)
static inline int sigisemptyset(sigset_t *set)
{
- extern void _NSIG_WORDS_is_unsupported_size(void);
switch (_NSIG_WORDS) {
case 4:
return (set->sig[3] | set->sig[2] |
@@ -77,7 +76,7 @@ static inline int sigisemptyset(sigset_t *set)
case 1:
return set->sig[0] == 0;
default:
- _NSIG_WORDS_is_unsupported_size();
+ BUILD_BUG();
return 0;
}
}
@@ -90,24 +89,23 @@ static inline int sigisemptyset(sigset_t *set)
#define _SIG_SET_BINOP(name, op) \
static inline void name(sigset_t *r, const sigset_t *a, const sigset_t *b) \
{ \
- extern void _NSIG_WORDS_is_unsupported_size(void); \
unsigned long a0, a1, a2, a3, b0, b1, b2, b3; \
\
switch (_NSIG_WORDS) { \
- case 4: \
+ case 4: \
a3 = a->sig[3]; a2 = a->sig[2]; \
b3 = b->sig[3]; b2 = b->sig[2]; \
r->sig[3] = op(a3, b3); \
r->sig[2] = op(a2, b2); \
- case 2: \
+ case 2: \
a1 = a->sig[1]; b1 = b->sig[1]; \
r->sig[1] = op(a1, b1); \
- case 1: \
+ case 1: \
a0 = a->sig[0]; b0 = b->sig[0]; \
r->sig[0] = op(a0, b0); \
break; \
- default: \
- _NSIG_WORDS_is_unsupported_size(); \
+ default: \
+ BUILD_BUG(); \
} \
}
@@ -128,16 +126,14 @@ _SIG_SET_BINOP(sigandnsets, _sig_andn)
#define _SIG_SET_OP(name, op) \
static inline void name(sigset_t *set) \
{ \
- extern void _NSIG_WORDS_is_unsupported_size(void); \
- \
switch (_NSIG_WORDS) { \
- case 4: set->sig[3] = op(set->sig[3]); \
- set->sig[2] = op(set->sig[2]); \
- case 2: set->sig[1] = op(set->sig[1]); \
- case 1: set->sig[0] = op(set->sig[0]); \
+ case 4: set->sig[3] = op(set->sig[3]); \
+ set->sig[2] = op(set->sig[2]); \
+ case 2: set->sig[1] = op(set->sig[1]); \
+ case 1: set->sig[0] = op(set->sig[0]); \
break; \
- default: \
- _NSIG_WORDS_is_unsupported_size(); \
+ default: \
+ BUILD_BUG(); \
} \
}
--
1.5.5.1
next prev parent reply other threads:[~2014-09-21 16:43 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-19 15:29 [PATCH 0/7] Silence even more W=2 warnings Jeff Kirsher
2014-09-19 15:29 ` [PATCH 1/7] compiler: Add diagnostic control macros Jeff Kirsher
2014-09-19 15:29 ` [PATCH 2/7] x86: Silence initializer-overrides warnings Jeff Kirsher
2014-09-19 15:29 ` Jeff Kirsher
2014-09-19 15:29 ` [PATCH 3/7] atomic: Silence nested-externs warnings Jeff Kirsher
2014-09-19 20:43 ` Peter Zijlstra
2014-09-19 20:43 ` Peter Zijlstra
2014-09-19 20:53 ` Jeff Kirsher
2014-09-19 15:29 ` [PATCH 4/7] bitops: " Jeff Kirsher
2014-09-19 15:29 ` [PATCH 5/7] signal: " Jeff Kirsher
2014-09-19 15:35 ` Richard Weinberger
2014-09-19 15:37 ` Jeff Kirsher
2014-09-19 15:39 ` Richard Weinberger
2014-09-19 17:20 ` Oleg Nesterov
2014-09-19 21:21 ` Josh Triplett
2014-09-19 21:26 ` Rustad, Mark D
2014-09-21 16:42 ` [PATCH 0/1] signal: use BUILD_BUG() instead of _NSIG_WORDS_is_unsupported_size() Oleg Nesterov
2014-09-21 16:43 ` Oleg Nesterov [this message]
2014-09-22 17:26 ` [PATCH 1/1] " Josh Triplett
2014-09-19 15:29 ` [PATCH 6/7] mm: Silence nested-externs warnings Jeff Kirsher
2014-09-19 15:29 ` Jeff Kirsher
2014-09-19 15:29 ` [PATCH 7/7] sched: " Jeff Kirsher
2014-09-19 19:34 ` Richard Weinberger
2014-09-19 20:34 ` Rustad, Mark D
2014-09-19 20:41 ` Richard Weinberger
2014-09-19 20:49 ` Rustad, Mark D
2014-09-22 17:55 ` [PATCH] sched: Remove nested extern Mark D Rustad
2014-09-22 18:25 ` Josh Triplett
2014-09-22 19:01 ` Peter Zijlstra
2014-09-22 19:32 ` Rustad, Mark D
2014-09-22 20:05 ` Peter Zijlstra
2014-09-22 20:59 ` Rustad, Mark D
2014-09-22 21:21 ` Peter Zijlstra
2014-09-22 21:50 ` Rustad, Mark D
2014-09-24 7:41 ` Ingo Molnar
2014-09-24 7:52 ` Peter Zijlstra
2014-09-24 7:58 ` Ingo Molnar
2014-09-19 22:54 ` [PATCH 7/7] sched: Silence nested-externs warnings Peter Zijlstra
2014-09-19 23:26 ` Rustad, Mark D
2014-09-22 15:33 ` [PATCH 0/7] Silence even more W=2 warnings Borislav Petkov
2014-09-22 17:06 ` Rustad, Mark D
2014-09-22 18:40 ` Borislav Petkov
2014-09-22 18:59 ` Rustad, Mark D
2014-09-22 19:21 ` Borislav Petkov
2014-09-22 19:44 ` Jeff Kirsher
2014-09-22 19:57 ` Borislav Petkov
2014-09-22 20:09 ` Jeff Kirsher
2014-09-22 20:33 ` Borislav Petkov
2014-09-22 21:21 ` Jeff Kirsher
2014-09-23 8:01 ` Borislav Petkov
2014-09-23 8:01 ` Borislav Petkov
2014-09-23 14:49 ` Josh Triplett
2014-09-23 16:08 ` Borislav Petkov
2014-09-23 16:29 ` Rustad, Mark D
2014-09-25 7:45 ` Geert Uytterhoeven
2014-09-25 16:44 ` Borislav Petkov
2014-09-26 19:37 ` Rustad, Mark D
2014-09-26 19:58 ` josh
2014-09-26 21:07 ` Rustad, Mark D
2014-09-22 21:50 ` Rustad, Mark D
2014-09-23 8:22 ` Borislav Petkov
2014-09-23 17:24 ` Rustad, Mark D
2014-09-23 18:44 ` Borislav Petkov
2014-09-23 19:04 ` Joe Perches
2014-09-23 20:43 ` Rustad, Mark D
2014-09-25 8:27 ` Borislav Petkov
2014-09-25 0:17 ` Rustad, Mark D
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=20140921164306.GB16744@redhat.com \
--to=oleg@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=computersforpeace@gmail.com \
--cc=geert@linux-m68k.org \
--cc=jeffrey.t.kirsher@intel.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sparse@vger.kernel.org \
--cc=mark.d.rustad@intel.com \
--cc=richard@nod.at \
--cc=sparse@chrisli.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.