diff options
| author | Jamie Gritton <jamie@FreeBSD.org> | 2025-09-13 22:30:14 +0000 |
|---|---|---|
| committer | Jamie Gritton <jamie@FreeBSD.org> | 2025-09-13 22:30:14 +0000 |
| commit | e75dda31c1eead9ad40580bd8fec17f2bbf55a21 (patch) | |
| tree | 09d21449724f16313f9121bc4b4b03c615edbab6 | |
| parent | 91ea7e2ce2b5b2ff4702c3092cfe944862d58172 (diff) | |
jaildesc: remove desc from the sysctl parameter list
Like lastjid, desc should count as a pseudo-parameter. The difference
lies entirely in the security.jail.param sysctls, which list all of
the jail parameters. Since desc opens and returns a file descriptor,
it has no place in such uses as "jls all." Like lastjid, it's still
recognized by the kernel if passed in/out, and hard-coded into libjail
so it can be recognized there.
MFC after: 3 days
| -rw-r--r-- | lib/libjail/jail.c | 10 | ||||
| -rw-r--r-- | sys/kern/kern_jail.c | 1 |
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/libjail/jail.c b/lib/libjail/jail.c index f761bc6993e5..ad3348af0d2d 100644 --- a/lib/libjail/jail.c +++ b/lib/libjail/jail.c @@ -920,13 +920,21 @@ jailparam_type(struct jailparam *jp) } desc; int mib[CTL_MAXNAME]; - /* The "lastjid" parameter isn't real. */ + /* + * Some pseudo-parameters don't show up in the sysctl + * parameter list. + */ name = jp->jp_name; if (!strcmp(name, "lastjid")) { jp->jp_valuelen = sizeof(int); jp->jp_ctltype = CTLTYPE_INT | CTLFLAG_WR; return (0); } + if (!strcmp(name, "desc")) { + jp->jp_valuelen = sizeof(int); + jp->jp_ctltype = CTLTYPE_INT | CTLFLAG_RW; + return (0); + } /* Find the sysctl that describes the parameter. */ mib[0] = 0; diff --git a/sys/kern/kern_jail.c b/sys/kern/kern_jail.c index 43035dc009b3..a75ba89d2a7e 100644 --- a/sys/kern/kern_jail.c +++ b/sys/kern/kern_jail.c @@ -4935,7 +4935,6 @@ sysctl_jail_param(SYSCTL_HANDLER_ARGS) * jail creation time but cannot be changed in an existing jail. */ SYSCTL_JAIL_PARAM(, jid, CTLTYPE_INT | CTLFLAG_RDTUN, "I", "Jail ID"); -SYSCTL_JAIL_PARAM(, desc, CTLTYPE_INT | CTLFLAG_RW, "I", "Jail descriptor"); SYSCTL_JAIL_PARAM(, parent, CTLTYPE_INT | CTLFLAG_RD, "I", "Jail parent ID"); SYSCTL_JAIL_PARAM_STRING(, name, CTLFLAG_RW, MAXHOSTNAMELEN, "Jail name"); SYSCTL_JAIL_PARAM_STRING(, path, CTLFLAG_RDTUN, MAXPATHLEN, "Jail root path"); |
