kern_procctl.c (b94088633898fdee8948787525d080b24aa57154) kern_procctl.c (1302eea7bba029a3b4e71f2d9cebae9337f4b054)
1/*-
2 * Copyright (c) 2014 John Baldwin
3 * Copyright (c) 2014, 2016 The FreeBSD Foundation
4 *
5 * Portions of this software were developed by Konstantin Belousov
6 * under sponsorship from the FreeBSD Foundation.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 453 unchanged lines hidden (view full) ---

462 if (error != 0)
463 return (error);
464 data = &x.rk;
465 break;
466 case PROC_TRACE_STATUS:
467 case PROC_TRAPCAP_STATUS:
468 data = &flags;
469 break;
1/*-
2 * Copyright (c) 2014 John Baldwin
3 * Copyright (c) 2014, 2016 The FreeBSD Foundation
4 *
5 * Portions of this software were developed by Konstantin Belousov
6 * under sponsorship from the FreeBSD Foundation.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 453 unchanged lines hidden (view full) ---

462 if (error != 0)
463 return (error);
464 data = &x.rk;
465 break;
466 case PROC_TRACE_STATUS:
467 case PROC_TRAPCAP_STATUS:
468 data = &flags;
469 break;
470 case PROC_PDEATHSIG_SET:
470 case PROC_PDEATHSIG_CTL:
471 error = copyin(uap->data, &signum, sizeof(signum));
472 if (error != 0)
473 return (error);
474 data = &signum;
475 break;
471 error = copyin(uap->data, &signum, sizeof(signum));
472 if (error != 0)
473 return (error);
474 data = &signum;
475 break;
476 case PROC_PDEATHSIG_GET:
476 case PROC_PDEATHSIG_STATUS:
477 data = &signum;
478 break;
479 default:
480 return (EINVAL);
481 }
482 error = kern_procctl(td, uap->idtype, uap->id, uap->com, data);
483 switch (uap->com) {
484 case PROC_REAP_STATUS:

--- 5 unchanged lines hidden (view full) ---

490 if (error == 0)
491 error = error1;
492 break;
493 case PROC_TRACE_STATUS:
494 case PROC_TRAPCAP_STATUS:
495 if (error == 0)
496 error = copyout(&flags, uap->data, sizeof(flags));
497 break;
477 data = &signum;
478 break;
479 default:
480 return (EINVAL);
481 }
482 error = kern_procctl(td, uap->idtype, uap->id, uap->com, data);
483 switch (uap->com) {
484 case PROC_REAP_STATUS:

--- 5 unchanged lines hidden (view full) ---

490 if (error == 0)
491 error = error1;
492 break;
493 case PROC_TRACE_STATUS:
494 case PROC_TRAPCAP_STATUS:
495 if (error == 0)
496 error = copyout(&flags, uap->data, sizeof(flags));
497 break;
498 case PROC_PDEATHSIG_GET:
498 case PROC_PDEATHSIG_STATUS:
499 if (error == 0)
500 error = copyout(&signum, uap->data, sizeof(signum));
501 break;
502 }
503 return (error);
504}
505
506static int

--- 39 unchanged lines hidden (view full) ---

546 switch (com) {
547 case PROC_REAP_ACQUIRE:
548 case PROC_REAP_RELEASE:
549 case PROC_REAP_STATUS:
550 case PROC_REAP_GETPIDS:
551 case PROC_REAP_KILL:
552 case PROC_TRACE_STATUS:
553 case PROC_TRAPCAP_STATUS:
499 if (error == 0)
500 error = copyout(&signum, uap->data, sizeof(signum));
501 break;
502 }
503 return (error);
504}
505
506static int

--- 39 unchanged lines hidden (view full) ---

546 switch (com) {
547 case PROC_REAP_ACQUIRE:
548 case PROC_REAP_RELEASE:
549 case PROC_REAP_STATUS:
550 case PROC_REAP_GETPIDS:
551 case PROC_REAP_KILL:
552 case PROC_TRACE_STATUS:
553 case PROC_TRAPCAP_STATUS:
554 case PROC_PDEATHSIG_SET:
555 case PROC_PDEATHSIG_GET:
554 case PROC_PDEATHSIG_CTL:
555 case PROC_PDEATHSIG_STATUS:
556 if (idtype != P_PID)
557 return (EINVAL);
558 }
559
560 switch (com) {
556 if (idtype != P_PID)
557 return (EINVAL);
558 }
559
560 switch (com) {
561 case PROC_PDEATHSIG_SET:
561 case PROC_PDEATHSIG_CTL:
562 signum = *(int *)data;
563 p = td->td_proc;
564 if ((id != 0 && id != p->p_pid) ||
565 (signum != 0 && !_SIG_VALID(signum)))
566 return (EINVAL);
567 PROC_LOCK(p);
568 p->p_pdeathsig = signum;
569 PROC_UNLOCK(p);
570 return (0);
562 signum = *(int *)data;
563 p = td->td_proc;
564 if ((id != 0 && id != p->p_pid) ||
565 (signum != 0 && !_SIG_VALID(signum)))
566 return (EINVAL);
567 PROC_LOCK(p);
568 p->p_pdeathsig = signum;
569 PROC_UNLOCK(p);
570 return (0);
571 case PROC_PDEATHSIG_GET:
571 case PROC_PDEATHSIG_STATUS:
572 p = td->td_proc;
573 if (id != 0 && id != p->p_pid)
574 return (EINVAL);
575 PROC_LOCK(p);
576 *(int *)data = p->p_pdeathsig;
577 PROC_UNLOCK(p);
578 return (0);
579 }

--- 83 unchanged lines hidden ---
572 p = td->td_proc;
573 if (id != 0 && id != p->p_pid)
574 return (EINVAL);
575 PROC_LOCK(p);
576 *(int *)data = p->p_pdeathsig;
577 PROC_UNLOCK(p);
578 return (0);
579 }

--- 83 unchanged lines hidden ---