DF-2799 / jailonce.c
/* * DF-2799 marker #2: a single jail(2) call. On the deadlocked kernel * this blocks forever acquiring jail_lock in sys_jail (kern_jail.c:275) * -> `timeout N ./jailonce` exits 124. On a healthy/patched kernel it * jails the process and exits 0 immediately. */ #include <sys/param.h> #include <sys/jail.h> #include <sys/syscall.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <errno.h> int main(void) { struct jail j; int jid; memset(&j, 0, sizeof(j)); j.version = 1; j.path = "/tmp"; j.hostname = "jailonce"; j.n_ips = 0; j.ips = NULL; jid = syscall(SYS_jail, &j); if (jid < 0) { printf("jailonce: jail() failed: %s\n", strerror(errno)); return (1); } printf("jailonce: jailed jid=%d\n", jid); return (0); } |