From: tip-bot for Stas Sergeev <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: sasha.levin@oracle.com, linux-kernel@vger.kernel.org,
hpa@zytor.com, shuahkh@osg.samsung.com, xemul@parallels.com,
luto@amacapital.net, mingo@kernel.org, vdavydov@parallels.com,
torvalds@linux-foundation.org, amanieu@gmail.com,
peterz@infradead.org, stsp@list.ru, viro@zeniv.linux.org.uk,
tglx@linutronix.de, oleg@redhat.com, mhocko@suse.com,
dvlasenk@redhat.com, akpm@linux-foundation.org, bp@alien8.de,
brgerst@gmail.com, richard@nod.at
Subject: [tip:core/signals] signals/sigaltstack: Prepare to add new SS_xxx flags
Date: Tue, 3 May 2016 00:50:06 -0700 [thread overview]
Message-ID: <tip-407bc16ad1769f5cb8ad9555611cb198187ef4cd@git.kernel.org> (raw)
In-Reply-To: <1460665206-13646-3-git-send-email-stsp@list.ru>
Commit-ID: 407bc16ad1769f5cb8ad9555611cb198187ef4cd
Gitweb: http://git.kernel.org/tip/407bc16ad1769f5cb8ad9555611cb198187ef4cd
Author: Stas Sergeev <stsp@list.ru>
AuthorDate: Thu, 14 Apr 2016 23:20:03 +0300
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 3 May 2016 08:37:59 +0200
signals/sigaltstack: Prepare to add new SS_xxx flags
This patch adds SS_FLAG_BITS - the mask that splits sigaltstack
mode values and bit-flags. Since there is no bit-flags yet, the
mask is defined to 0. The flags are added by subsequent patches.
With every new flag, the mask should have the appropriate bit cleared.
This makes sure if some flag is tried on a kernel that doesn't
support it, the -EINVAL error will be returned, because such a
flag will be treated as an invalid mode rather than the bit-flag.
That way the existence of the particular features can be probed
at run-time.
This change was suggested by Andy Lutomirski:
https://lkml.org/lkml/2016/3/6/158
Signed-off-by: Stas Sergeev <stsp@list.ru>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Amanieu d'Antras <amanieu@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Richard Weinberger <richard@nod.at>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: Shuah Khan <shuahkh@osg.samsung.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vladimir Davydov <vdavydov@parallels.com>
Cc: linux-api@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Link: http://lkml.kernel.org/r/1460665206-13646-3-git-send-email-stsp@list.ru
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
include/uapi/linux/signal.h | 3 +++
kernel/signal.c | 16 ++++++----------
2 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/include/uapi/linux/signal.h b/include/uapi/linux/signal.h
index e1bd50c2..7c73165 100644
--- a/include/uapi/linux/signal.h
+++ b/include/uapi/linux/signal.h
@@ -7,4 +7,7 @@
#define SS_ONSTACK 1
#define SS_DISABLE 2
+/* mask for all SS_xxx flags */
+#define SS_FLAG_BITS 0
+
#endif /* _UAPI_LINUX_SIGNAL_H */
diff --git a/kernel/signal.c b/kernel/signal.c
index aa9bf00..b1c6eb4 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -3104,7 +3104,8 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s
if (uss) {
void __user *ss_sp;
size_t ss_size;
- int ss_flags;
+ unsigned ss_flags;
+ int ss_mode;
error = -EFAULT;
if (!access_ok(VERIFY_READ, uss, sizeof(*uss)))
@@ -3119,18 +3120,13 @@ do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long s
if (on_sig_stack(sp))
goto out;
+ ss_mode = ss_flags & ~SS_FLAG_BITS;
error = -EINVAL;
- /*
- * Note - this code used to test ss_flags incorrectly:
- * old code may have been written using ss_flags==0
- * to mean ss_flags==SS_ONSTACK (as this was the only
- * way that worked) - this fix preserves that older
- * mechanism.
- */
- if (ss_flags != SS_DISABLE && ss_flags != SS_ONSTACK && ss_flags != 0)
+ if (ss_mode != SS_DISABLE && ss_mode != SS_ONSTACK &&
+ ss_mode != 0)
goto out;
- if (ss_flags == SS_DISABLE) {
+ if (ss_mode == SS_DISABLE) {
ss_size = 0;
ss_sp = NULL;
} else {
next prev parent reply other threads:[~2016-05-03 7:51 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-14 20:20 [PATCH v6(resend2) 0/4] make sigaltstack compatible with swapcontext() Stas Sergeev
2016-04-14 20:20 ` [PATCH 1/4] [Cleanup] x86: signal: unify the sigaltstack check with other arches Stas Sergeev
2016-05-03 7:49 ` [tip:core/signals] signals/sigaltstack, x86/signals: Unify the x86 sigaltstack check with other architectures tip-bot for Stas Sergeev
2016-05-03 16:12 ` Andy Lutomirski
2016-04-14 20:20 ` [PATCH 2/4] sigaltstack: preparations for adding new SS_xxx flags Stas Sergeev
2016-05-03 7:50 ` tip-bot for Stas Sergeev [this message]
2016-05-03 9:59 ` [tip:core/signals] signals/sigaltstack: Prepare to add " Borislav Petkov
2016-05-03 16:13 ` Andy Lutomirski
2016-05-03 16:44 ` Andy Lutomirski
2016-04-14 20:20 ` [PATCH 3/4] sigaltstack: implement SS_AUTODISARM flag Stas Sergeev
2016-05-03 7:50 ` [tip:core/signals] signals/sigaltstack: Implement " tip-bot for Stas Sergeev
2016-05-03 16:27 ` Andy Lutomirski
2016-04-14 20:20 ` [PATCH 4/4] selftests: Add test for sigaltstack(SS_ONSTACK|SS_AUTODISARM) Stas Sergeev
2016-05-03 7:50 ` [tip:core/signals] selftests/sigaltstack: Add new testcase " tip-bot for Stas Sergeev
2016-05-03 16:43 ` Andy Lutomirski
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=tip-407bc16ad1769f5cb8ad9555611cb198187ef4cd@git.kernel.org \
--to=tipbot@zytor.com \
--cc=akpm@linux-foundation.org \
--cc=amanieu@gmail.com \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=dvlasenk@redhat.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mhocko@suse.com \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=richard@nod.at \
--cc=sasha.levin@oracle.com \
--cc=shuahkh@osg.samsung.com \
--cc=stsp@list.ru \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vdavydov@parallels.com \
--cc=viro@zeniv.linux.org.uk \
--cc=xemul@parallels.com \
/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