aboutsummaryrefslogtreecommitdiff
path: root/sys/compat/linux/linux_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/compat/linux/linux_util.h')
-rw-r--r--sys/compat/linux/linux_util.h18
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 *,