diff options
author | mav <mav@FreeBSD.org> | 2016-10-12 05:45:40 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2016-10-12 05:45:40 +0000 |
commit | ad4ff5b70e76b08587ea26cbc9b16a5cf733d46f (patch) | |
tree | 3b75c872d6919f555983b929ea7f9eda316279a9 | |
parent | 5efe20203026d21468bbd91efa6a490f9963ce0d (diff) | |
download | FreeBSD-src-ad4ff5b70e76b08587ea26cbc9b16a5cf733d46f.zip FreeBSD-src-ad4ff5b70e76b08587ea26cbc9b16a5cf733d46f.tar.gz |
MFC r305221: MFV r302992:
7071 lzc_snapshot does not fill in errlist on ENOENT
illumos/illumos-gate@25f7d993adbfb3452ac4625b3791670746d35ae3
https://github.com/illumos/illumos-gate/commit/25f7d993adbfb3452ac4625b379167074
6d35ae3
https://www.illumos.org/issues/7071
upstream
DLPX-40482 lzc_snapshot does not fill in errlist on ENOENT
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Author: Matthew Ahrens <mahrens@delphix.com>
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c index f1b086f..aea3c9e 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c @@ -499,6 +499,14 @@ zfs_secpolicy_write_perms(const char *name, const char *perm, cred_t *cr) dsl_dataset_t *ds; dsl_pool_t *dp; + /* + * First do a quick check for root in the global zone, which + * is allowed to do all write_perms. This ensures that zfs_ioc_* + * will get to handle nonexistent datasets. + */ + if (INGLOBALZONE(curthread) && secpolicy_zfs(cr) == 0) + return (0); + error = dsl_pool_hold(name, FTAG, &dp); if (error != 0) return (error); |