From: Arun Sharma <arun.sharma@intel.com>
To: linux-ia64@vger.kernel.org
Subject: MINSIGSTKSZ on ia32
Date: Mon, 08 Sep 2003 23:56:00 +0000 [thread overview]
Message-ID: <marc-linux-ia64-106306553008889@msgid-missing> (raw)
[-- Attachment #1: Type: text/plain, Size: 230 bytes --]
MINSIGSTKSZ is defined differently for i386 and ia64. This patch improves compatibility with apps which use sigaltstack(2) with sizes between MINSIGSTKSZ_IA32 and MINSIGSTKSZ.
Patches for both 2.4 and 2.6 are attached.
-Arun
[-- Attachment #2: sigaltstk-2.4.patch --]
[-- Type: text/plain, Size: 1149 bytes --]
Index: linux-2.4/arch/ia64/ia32/sys_ia32.c
===================================================================
--- linux-2.4/arch/ia64/ia32/sys_ia32.c (revision 8)
+++ linux-2.4/arch/ia64/ia32/sys_ia32.c (working copy)
@@ -75,6 +75,7 @@
#define OFFSET4K(a) ((a) & 0xfff)
#define PAGE_START(addr) ((addr) & PAGE_MASK)
#define PAGE_OFF(addr) ((addr) & ~PAGE_MASK)
+#define MINSIGSTKSZ_IA32 2048
extern asmlinkage long sys_execve (char *, char **, char **, struct pt_regs *);
extern asmlinkage long sys_mprotect (unsigned long, size_t, unsigned long);
@@ -3408,10 +3409,18 @@
return -EFAULT;
uss.ss_sp = (void *) (long) buf32.ss_sp;
uss.ss_flags = buf32.ss_flags;
- uss.ss_size = buf32.ss_size;
+ /* MINSIGSTKSZ is different for ia32 vs ia64. We lie here to pass the
+ check and set it to the user requested value later */
+ if (buf32.ss_size < MINSIGSTKSZ_IA32) {
+ ret = -ENOMEM;
+ goto out;
+ }
+ uss.ss_size = MINSIGSTKSZ;
set_fs(KERNEL_DS);
ret = do_sigaltstack(uss32 ? &uss : NULL, &uoss, pt->r12);
+ current->sas_ss_size = buf32.ss_size;
set_fs(old_fs);
+out:
if (ret < 0)
return(ret);
if (uoss32) {
[-- Attachment #3: sigaltstk-2.6.patch --]
[-- Type: text/plain, Size: 1066 bytes --]
Index: linux-2.6/arch/ia64/ia32/sys_ia32.c
===================================================================
--- linux-2.6/arch/ia64/ia32/sys_ia32.c (revision 13148)
+++ linux-2.6/arch/ia64/ia32/sys_ia32.c (working copy)
@@ -76,6 +76,7 @@
#define OFFSET4K(a) ((a) & 0xfff)
#define PAGE_START(addr) ((addr) & PAGE_MASK)
+#define MINSIGSTKSZ_IA32 2048
#define high2lowuid(uid) ((uid) > 65535 ? 65534 : (uid))
#define high2lowgid(gid) ((gid) > 65535 ? 65534 : (gid))
@@ -2262,10 +2263,18 @@
return -EFAULT;
uss.ss_sp = (void *) (long) buf32.ss_sp;
uss.ss_flags = buf32.ss_flags;
- uss.ss_size = buf32.ss_size;
+ /* MINSIGSTKSZ is different for ia32 vs ia64. We lie here to pass the
+ check and set it to the user requested value later */
+ if (buf32.ss_size < MINSIGSTKSZ_IA32) {
+ ret = -ENOMEM;
+ goto out;
+ }
+ uss.ss_size = MINSIGSTKSZ;
set_fs(KERNEL_DS);
ret = do_sigaltstack(uss32 ? &uss : NULL, &uoss, pt->r12);
+ current->sas_ss_size = buf32.ss_size;
set_fs(old_fs);
+out:
if (ret < 0)
return(ret);
if (uoss32) {
next reply other threads:[~2003-09-08 23:56 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-08 23:56 Arun Sharma [this message]
2003-09-17 22:44 ` MINSIGSTKSZ on ia32 Bjorn Helgaas
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=marc-linux-ia64-106306553008889@msgid-missing \
--to=arun.sharma@intel.com \
--cc=linux-ia64@vger.kernel.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.