When sigaltstack is called with a stack size that's not smaller

than LINUX_MINSIGSTKSZ but smaller than MINSIGSTKSZ, cheat and
pass MINSIGSTKSZ to the kernel. This is a workaround.

Submitted through: nate
This commit is contained in:
Marcel Moolenaar 2000-09-06 06:08:54 +00:00
parent 673fac08fd
commit dee4ec33cf
4 changed files with 10 additions and 2 deletions

View file

@ -157,6 +157,9 @@ struct linux_new_utsname {
#define LINUX_SIGISMEMBER(set, sig) SIGISMEMBER(set, sig)
#define LINUX_SIGADDSET(set, sig) SIGADDSET(set, sig)
/* sigaltstack */
#define LINUX_MINSIGSTKSZ 2048
typedef void (*linux_handler_t)(int);
typedef u_long linux_osigset_t;

View file

@ -612,7 +612,8 @@ linux_sigaltstack(p, uap)
ss = stackgap_alloc(&sg, sizeof(stack_t));
ss->ss_sp = lss.ss_sp;
ss->ss_size = lss.ss_size;
ss->ss_size = (lss.ss_size >= LINUX_MINSIGSTKSZ &&
lss.ss_size < MINSIGSTKSZ) ? MINSIGSTKSZ : lss.ss_size;
ss->ss_flags = lss.ss_flags;
oss = (uap->uoss != NULL)

View file

@ -157,6 +157,9 @@ struct linux_new_utsname {
#define LINUX_SIGISMEMBER(set, sig) SIGISMEMBER(set, sig)
#define LINUX_SIGADDSET(set, sig) SIGADDSET(set, sig)
/* sigaltstack */
#define LINUX_MINSIGSTKSZ 2048
typedef void (*linux_handler_t)(int);
typedef u_long linux_osigset_t;

View file

@ -612,7 +612,8 @@ linux_sigaltstack(p, uap)
ss = stackgap_alloc(&sg, sizeof(stack_t));
ss->ss_sp = lss.ss_sp;
ss->ss_size = lss.ss_size;
ss->ss_size = (lss.ss_size >= LINUX_MINSIGSTKSZ &&
lss.ss_size < MINSIGSTKSZ) ? MINSIGSTKSZ : lss.ss_size;
ss->ss_flags = lss.ss_flags;
oss = (uap->uoss != NULL)