Print this page
OS-4818 contract template disappears on exec
OS-4937 lxbrand ptracer count updates can race
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
OS-4188 NULL dereference in lwp_hash_in
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
OS-4129 lxbrand should not abuse p_brand_data for storing exit signal
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
OS-3149 lx brand always sends SIGCHLD to parent processes, regardless of how clone was invoked
OS-2887 lxbrand add WALL, WCLONE, WNOTHREAD support to waitid
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

*** 19,28 **** --- 19,29 ---- * CDDL HEADER END */ /* * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014 Joyent, Inc. All rights reserved. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */
*** 346,357 **** uint_t p_poolflag; /* pool-related flags (see below) */ uintptr_t p_portcnt; /* event ports counter */ struct zone *p_zone; /* zone in which process lives */ struct vnode *p_execdir; /* directory that p_exec came from */ struct brand *p_brand; /* process's brand */ - void *p_brand_data; /* per-process brand state */ /* additional lock to protect p_sessp (but not its contents) */ kmutex_t p_splock; rctl_qty_t p_locked_mem; /* locked memory charged to proc */ /* protected by p_lock */ rctl_qty_t p_crypto_mem; /* /dev/crypto memory charged to proc */ --- 347,360 ---- uint_t p_poolflag; /* pool-related flags (see below) */ uintptr_t p_portcnt; /* event ports counter */ struct zone *p_zone; /* zone in which process lives */ struct vnode *p_execdir; /* directory that p_exec came from */ struct brand *p_brand; /* process's brand */ + /* per-process brand state */ + void *p_brand_data; + /* additional lock to protect p_sessp (but not its contents) */ kmutex_t p_splock; rctl_qty_t p_locked_mem; /* locked memory charged to proc */ /* protected by p_lock */ rctl_qty_t p_crypto_mem; /* /dev/crypto memory charged to proc */
*** 361,371 **** /* * The user structure */ struct user p_user; /* (see sys/user.h) */ } proc_t; - #define PROC_T /* headers relying on proc_t are OK */ #ifdef _KERNEL /* active process chain */ --- 364,373 ----
*** 627,636 **** --- 629,639 ---- extern int eat_signal(kthread_t *, int); extern int signal_is_blocked(kthread_t *, int); extern int sigcheck(proc_t *, kthread_t *); extern void sigdefault(proc_t *); + extern struct pid *pid_find(pid_t pid); extern void pid_setmin(void); extern pid_t pid_allocate(proc_t *, pid_t, int); extern int pid_rele(struct pid *); extern void pid_exit(proc_t *, struct task *); extern void proc_entry_free(struct pid *);
*** 642,651 **** --- 645,655 ---- extern proc_t *sprlock_zone(pid_t, zoneid_t); extern int sprtrylock_proc(proc_t *); extern void sprwaitlock_proc(proc_t *); extern void sprlock_proc(proc_t *); extern void sprunlock(proc_t *); + extern void sprunprlock(proc_t *); extern void pid_init(void); extern proc_t *pid_entry(int); extern int pid_slot(proc_t *); extern void signal(pid_t, int); extern void prsignal(struct pid *, int);
*** 757,767 **** extern int holdwatch(void); extern void pokelwps(proc_t *); extern void continuelwps(proc_t *); extern int exitlwps(int); extern void lwp_ctmpl_copy(klwp_t *, klwp_t *); ! extern void lwp_ctmpl_clear(klwp_t *); extern klwp_t *forklwp(klwp_t *, proc_t *, id_t); extern void lwp_load(klwp_t *, gregset_t, uintptr_t); extern void lwp_setrval(klwp_t *, int, int); extern void lwp_forkregs(klwp_t *, klwp_t *); extern void lwp_freeregs(klwp_t *, int); --- 761,771 ---- extern int holdwatch(void); extern void pokelwps(proc_t *); extern void continuelwps(proc_t *); extern int exitlwps(int); extern void lwp_ctmpl_copy(klwp_t *, klwp_t *); ! extern void lwp_ctmpl_clear(klwp_t *, boolean_t); extern klwp_t *forklwp(klwp_t *, proc_t *, id_t); extern void lwp_load(klwp_t *, gregset_t, uintptr_t); extern void lwp_setrval(klwp_t *, int, int); extern void lwp_forkregs(klwp_t *, klwp_t *); extern void lwp_freeregs(klwp_t *, int);