Print this page
7029 want per-process exploit mitigation features (secflags)
7030 want basic address space layout randomization (aslr)
7031 noexec_user_stack should be a secflag
7032 want a means to forbid mappings around NULL.


  36 
  37 #include <sys/isa_defs.h>
  38 #include <sys/zone.h>
  39 
  40 #ifdef  __cplusplus
  41 extern "C" {
  42 #endif
  43 
  44 #if defined(_KERNEL)
  45 
  46 extern kmutex_t pr_pidlock;
  47 extern kcondvar_t *pr_pid_cv;
  48 
  49 struct prfpregset;
  50 struct pstatus;
  51 struct lwpstatus;
  52 struct psinfo;
  53 struct lwpsinfo;
  54 struct prcred;
  55 struct prpriv;

  56 
  57 struct seg;
  58 struct regs;
  59 struct watched_page;
  60 
  61 /*
  62  * These are functions in the procfs module that are
  63  * called from the kernel proper and from other modules.
  64  */
  65 extern uint_t pr_getprot(struct seg *, int, void **,
  66         caddr_t *, caddr_t *, caddr_t);
  67 extern void pr_getprot_done(void **);
  68 extern size_t pr_getsegsize(struct seg *, int);
  69 extern int  pr_isobject(struct vnode *);
  70 extern int  pr_isself(struct vnode *);
  71 extern void prinvalidate(struct user *);
  72 extern void prgetstatus(proc_t *, struct pstatus *, zone_t *);
  73 extern void prgetlwpstatus(kthread_t *, struct lwpstatus *, zone_t *);
  74 extern void prgetpsinfo(proc_t *, struct psinfo *);
  75 extern void prgetlwpsinfo(kthread_t *, struct lwpsinfo *);
  76 extern void prgetprfpregs(klwp_t *, struct prfpregset *);
  77 extern void prgetprxregs(klwp_t *, caddr_t);
  78 extern int  prgetprxregsize(proc_t *);
  79 #if defined(__lint)
  80 /* Work around lint confusion between old and new prcred definitions */
  81 extern void prgetcred();
  82 #else
  83 extern void prgetcred(proc_t *, struct prcred *);
  84 #endif
  85 extern void prgetpriv(proc_t *, struct prpriv *);
  86 extern size_t prgetprivsize(void);

  87 extern int  prnsegs(struct as *, int);
  88 extern void prexit(proc_t *);
  89 extern void prfree(proc_t *);
  90 extern void prlwpexit(kthread_t *);
  91 extern void prlwpfree(proc_t *, lwpent_t *);
  92 extern void prexecstart(void);
  93 extern void prexecend(void);
  94 extern void prrelvm(void);
  95 extern void prbarrier(proc_t *);
  96 extern void prstop(int, int);
  97 extern void prunstop(void);
  98 extern void prnotify(struct vnode *);
  99 extern void prstep(klwp_t *, int);
 100 extern void prnostep(klwp_t *);
 101 extern void prdostep(void);
 102 extern int  prundostep(void);
 103 extern int  prhasfp(void);
 104 extern int  prhasx(proc_t *);
 105 extern caddr_t prmapin(struct as *, caddr_t, int);
 106 extern void prmapout(struct as *, caddr_t, caddr_t, int);




  36 
  37 #include <sys/isa_defs.h>
  38 #include <sys/zone.h>
  39 
  40 #ifdef  __cplusplus
  41 extern "C" {
  42 #endif
  43 
  44 #if defined(_KERNEL)
  45 
  46 extern kmutex_t pr_pidlock;
  47 extern kcondvar_t *pr_pid_cv;
  48 
  49 struct prfpregset;
  50 struct pstatus;
  51 struct lwpstatus;
  52 struct psinfo;
  53 struct lwpsinfo;
  54 struct prcred;
  55 struct prpriv;
  56 struct prsecflags;
  57 
  58 struct seg;
  59 struct regs;
  60 struct watched_page;
  61 
  62 /*
  63  * These are functions in the procfs module that are
  64  * called from the kernel proper and from other modules.
  65  */
  66 extern uint_t pr_getprot(struct seg *, int, void **,
  67         caddr_t *, caddr_t *, caddr_t);
  68 extern void pr_getprot_done(void **);
  69 extern size_t pr_getsegsize(struct seg *, int);
  70 extern int  pr_isobject(struct vnode *);
  71 extern int  pr_isself(struct vnode *);
  72 extern void prinvalidate(struct user *);
  73 extern void prgetstatus(proc_t *, struct pstatus *, zone_t *);
  74 extern void prgetlwpstatus(kthread_t *, struct lwpstatus *, zone_t *);
  75 extern void prgetpsinfo(proc_t *, struct psinfo *);
  76 extern void prgetlwpsinfo(kthread_t *, struct lwpsinfo *);
  77 extern void prgetprfpregs(klwp_t *, struct prfpregset *);
  78 extern void prgetprxregs(klwp_t *, caddr_t);
  79 extern int  prgetprxregsize(proc_t *);
  80 #if defined(__lint)
  81 /* Work around lint confusion between old and new prcred definitions */
  82 extern void prgetcred();
  83 #else
  84 extern void prgetcred(proc_t *, struct prcred *);
  85 #endif
  86 extern void prgetpriv(proc_t *, struct prpriv *);
  87 extern size_t prgetprivsize(void);
  88 extern void prgetsecflags(proc_t *, struct prsecflags *);
  89 extern int  prnsegs(struct as *, int);
  90 extern void prexit(proc_t *);
  91 extern void prfree(proc_t *);
  92 extern void prlwpexit(kthread_t *);
  93 extern void prlwpfree(proc_t *, lwpent_t *);
  94 extern void prexecstart(void);
  95 extern void prexecend(void);
  96 extern void prrelvm(void);
  97 extern void prbarrier(proc_t *);
  98 extern void prstop(int, int);
  99 extern void prunstop(void);
 100 extern void prnotify(struct vnode *);
 101 extern void prstep(klwp_t *, int);
 102 extern void prnostep(klwp_t *);
 103 extern void prdostep(void);
 104 extern int  prundostep(void);
 105 extern int  prhasfp(void);
 106 extern int  prhasx(proc_t *);
 107 extern caddr_t prmapin(struct as *, caddr_t, int);
 108 extern void prmapout(struct as *, caddr_t, caddr_t, int);