diff options
Diffstat (limited to 'sys/compat/linux/linux_util.h')
| -rw-r--r-- | sys/compat/linux/linux_util.h | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sys/compat/linux/linux_util.h b/sys/compat/linux/linux_util.h index f8775fbf44c8..a54ddfd4a7a8 100644 --- a/sys/compat/linux/linux_util.h +++ b/sys/compat/linux/linux_util.h @@ -56,30 +56,28 @@ static __inline caddr_t stackgap_init(void); static __inline void *stackgap_alloc(caddr_t *, size_t); +#define szsigcode (*(curproc->p_sysent->sv_szsigcode)) + static __inline caddr_t stackgap_init() { -#define szsigcode (*(curproc->p_sysent->sv_szsigcode)) return (caddr_t)(PS_STRINGS - szsigcode - SPARE_USRSPACE); } - static __inline void * stackgap_alloc(sgp, sz) caddr_t *sgp; size_t sz; { - void *p = (void *) *sgp; - *sgp += ALIGN(sz); + void *p = (void *) *sgp; + + sz = ALIGN(sz); + if (*sgp + sz > (caddr_t)(PS_STRINGS - szsigcode)) + return NULL; + *sgp += sz; return p; } -#ifdef DEBUG_LINUX -#define DPRINTF(a) printf a; -#else -#define DPRINTF(a) -#endif - extern const char linux_emul_path[]; int linux_emul_find __P((struct proc *, caddr_t *, const char *, char *, |
