MCPcopy Create free account
hub / github.com/F-Stack/f-stack / stackgap_ctl

Function stackgap_ctl

freebsd/kern/kern_procctl.c:523–558  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

521}
522
523static int
524stackgap_ctl(struct thread *td, struct proc *p, int state)
525{
526 PROC_LOCK_ASSERT(p, MA_OWNED);
527
528 if ((state & ~(PROC_STACKGAP_ENABLE | PROC_STACKGAP_DISABLE |
529 PROC_STACKGAP_ENABLE_EXEC | PROC_STACKGAP_DISABLE_EXEC)) != 0)
530 return (EINVAL);
531 switch (state & (PROC_STACKGAP_ENABLE | PROC_STACKGAP_DISABLE)) {
532 case PROC_STACKGAP_ENABLE:
533 if ((p->p_flag2 & P2_STKGAP_DISABLE) != 0)
534 return (EINVAL);
535 break;
536 case PROC_STACKGAP_DISABLE:
537 p->p_flag2 |= P2_STKGAP_DISABLE;
538 break;
539 case 0:
540 break;
541 default:
542 return (EINVAL);
543 }
544 switch (state & (PROC_STACKGAP_ENABLE_EXEC |
545 PROC_STACKGAP_DISABLE_EXEC)) {
546 case PROC_STACKGAP_ENABLE_EXEC:
547 p->p_flag2 &= ~P2_STKGAP_DISABLE_EXEC;
548 break;
549 case PROC_STACKGAP_DISABLE_EXEC:
550 p->p_flag2 |= P2_STKGAP_DISABLE_EXEC;
551 break;
552 case 0:
553 break;
554 default:
555 return (EINVAL);
556 }
557 return (0);
558}
559
560static int
561stackgap_status(struct thread *td, struct proc *p, int *data)

Callers 1

kern_procctl_singleFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected