freebsd kernel with SKQ
Go to file
tsoome 8617bf1892 MFOpenZFS: Add basic zfs ioc input nvpair validation
We want newer versions of libzfs_core to run against an existing
zfs kernel module (i.e. a deferred reboot or module reload after
an update).

Programmatically document, via a zfs_ioc_key_t, the valid arguments
for the ioc commands that rely on nvpair input arguments (i.e. non
legacy commands from libzfs_core). Automatically verify the expected
pairs before dispatching a command.

This initial phase focuses on the non-legacy ioctls. A follow-on
change can address the legacy ioctl input from the zfs_cmd_t.

The zfs_ioc_key_t for zfs_keys_channel_program looks like:

static const zfs_ioc_key_t zfs_keys_channel_program[] = {
       {"program",     DATA_TYPE_STRING,               0},
       {"arg",         DATA_TYPE_UNKNOWN,              0},
       {"sync",        DATA_TYPE_BOOLEAN_VALUE,        ZK_OPTIONAL},
       {"instrlimit",  DATA_TYPE_UINT64,               ZK_OPTIONAL},
       {"memlimit",    DATA_TYPE_UINT64,               ZK_OPTIONAL},
};

Introduce four input errors to identify specific input failures
(in addition to generic argument value errors like EINVAL, ERANGE,
EBADF, and E2BIG).

ZFS_ERR_IOC_CMD_UNAVAIL the ioctl number is not supported by kernel
ZFS_ERR_IOC_ARG_UNAVAIL an input argument is not supported by kernel
ZFS_ERR_IOC_ARG_REQUIRED a required input argument is missing
ZFS_ERR_IOC_ARG_BADTYPE an input argument has an invalid type

Reviewed by:	allanjude
Obtained from:	OpenZFS
Sponsored by:	Netflix, Klara Inc.
Differential Revision:	https://reviews.freebsd.org/D25393
2020-06-23 06:42:39 +00:00
bin bin/ps: Make the rtprio option actually show realtime priorities 2020-06-19 09:27:58 +00:00
cddl MFOpenZFS: Add basic zfs ioc input nvpair validation 2020-06-23 06:42:39 +00:00
contrib Fix crash in drill(1) when IP has two subsequent dots 2020-06-22 23:13:14 +00:00
crypto Merge OpenSSL 1.1.1g. 2020-04-21 19:38:32 +00:00
etc Restrict default /root permissions 2020-06-04 16:04:19 +00:00
gnu Remove now-unused GNU as build infrastructure 2020-06-07 13:53:23 +00:00
include Add pthread_getname_np() and pthread_setname_np() aliases for 2020-06-10 22:13:24 +00:00
kerberos5 Update Makefile.depend files 2019-12-11 17:37:53 +00:00
lib strtok(3): make it easier to find the RETURN VALUES section 2020-06-22 11:03:36 +00:00
libexec network.subr: unobsolete gif_interfaces 2020-06-22 17:25:21 +00:00
release release: Fix arm GPT image 2020-06-10 14:10:48 +00:00
rescue rescue: Remove useless linking with libl 2020-03-24 07:08:02 +00:00
sbin Improve the rcorder manual page 2020-06-22 10:01:24 +00:00
secure Install 32-bit libcrypto engines in /usr/lib32/engines instead of 2020-06-01 18:58:09 +00:00
share Add support to the crypto framework for separate AAD buffers. 2020-06-22 23:20:43 +00:00
stand Revert r362466 2020-06-22 07:46:24 +00:00
sys MFOpenZFS: Add basic zfs ioc input nvpair validation 2020-06-23 06:42:39 +00:00
targets libalias: retire cuseeme support 2020-05-16 02:29:10 +00:00
tests Make audit tests depend on /dev/auditpipe. This should fix 2020-06-18 15:41:16 +00:00
tools flua: add ucl library 2020-06-22 03:14:43 +00:00
usr.bin Revert r362466 2020-06-22 07:46:24 +00:00
usr.sbin Revert r362466 2020-06-22 07:46:24 +00:00
.arcconfig
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml Cirrus-CI: increase timeout to 120m 2020-02-19 15:56:40 +00:00
.clang-format Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore .gitignore: Add LINT kernel configurations generated into SRCDIR 2019-08-10 18:22:22 +00:00
COPYRIGHT Happy New Year 2020! 2019-12-31 16:01:36 +00:00
LOCKS LOCKS: update current locks 2018-06-09 03:08:04 +00:00
MAINTAINERS ice(4): Introduce new driver for Intel E800 Ethernet controllers 2020-05-26 23:35:10 +00:00
Makefile Use universe-toolchain config(8) 2020-04-29 02:18:39 +00:00
Makefile.inc1 Squash liblzma build race 2020-06-22 03:44:01 +00:00
Makefile.libcompat Stop building libl and liby 2020-03-26 08:23:09 +00:00
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc Update opencsd to 0.14.2 2020-06-17 10:42:20 +00:00
README Import OpenSSL 1.1.1g. 2020-04-21 19:07:46 +00:00
README.md Import OpenCSD v0.14.2 2020-06-15 11:30:04 +00:00
RELNOTES Add an entry for r362158, r362163, which changes struct export_args. 2020-06-16 20:55:22 +00:00
UPDATING Add an entry to UPDATING for r362158. 2020-06-14 00:15:44 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, and https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information, including setting make(1) variables.

Source Roadmap:

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

stand		Boot loader sources.

sys		Kernel sources.

sys/<arch>/conf Kernel configuration files. GENERIC is the configuration
		used in release builds. NOTES contains documentation of
		all possible entries.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html