summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2014-07-14 14:09:02 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2014-07-14 14:09:02 +0000
commit7af6aca33f27dcf1ab503e2f68f5fb0d64e971c8 (patch)
tree1c0e2c876ad65cc341c1ca8f8fc86b6138c24be5 /usr/src
parente27ccb2e3137137cf39fe40a041915fd871505e0 (diff)
downloadillumos-joyent-7af6aca33f27dcf1ab503e2f68f5fb0d64e971c8.tar.gz
OS-3202 lxbrand fork failure when ENOMEM causes panic
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/brand/lx/os/lx_brand.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/usr/src/uts/common/brand/lx/os/lx_brand.c b/usr/src/uts/common/brand/lx/os/lx_brand.c
index 142123df00..1ddc0367c8 100644
--- a/usr/src/uts/common/brand/lx/os/lx_brand.c
+++ b/usr/src/uts/common/brand/lx/os/lx_brand.c
@@ -160,7 +160,13 @@ lx_proc_exit(proc_t *p, klwp_t *lwp)
zone_status_get(global_zone) < ZONE_IS_SHUTTING_DOWN)
(void) zone_kadmin(A_REBOOT, 0, NULL, CRED());
}
- lx_exitlwp(lwp);
+
+ /*
+ * We might get here if fork failed (e.g. ENOMEM) so we don't always
+ * have an lwp (see brand_clearbrand).
+ */
+ if (lwp != NULL)
+ lx_exitlwp(lwp);
kmem_free(p->p_brand_data, sizeof (struct lx_proc_data));
p->p_brand_data = NULL;
}