mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 18:40:43 +03:00
FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372)
This includes the last 12.x release (now EOL) and 13.0 development versions (<1300139). Sponsored-by: https://despairlabs.com/sponsor/ Signed-off-by: Rob Norris <robn@despairlabs.com> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Reviewed-by: Tony Hutter <hutter2@llnl.gov>
This commit is contained in:
@@ -243,22 +243,14 @@ void
|
||||
kmem_cache_reap_soon(kmem_cache_t *cache)
|
||||
{
|
||||
#ifndef KMEM_DEBUG
|
||||
#if __FreeBSD_version >= 1300043
|
||||
uma_zone_reclaim(cache->kc_zone, UMA_RECLAIM_DRAIN);
|
||||
#else
|
||||
zone_drain(cache->kc_zone);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
kmem_reap(void)
|
||||
{
|
||||
#if __FreeBSD_version >= 1300043
|
||||
uma_reclaim(UMA_RECLAIM_TRIM);
|
||||
#else
|
||||
uma_reclaim();
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
void
|
||||
|
||||
@@ -44,42 +44,42 @@ int
|
||||
secpolicy_nfs(cred_t *cr)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_NFS_DAEMON));
|
||||
return (priv_check_cred(cr, PRIV_NFS_DAEMON));
|
||||
}
|
||||
|
||||
int
|
||||
secpolicy_zfs(cred_t *cr)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_MOUNT));
|
||||
return (priv_check_cred(cr, PRIV_VFS_MOUNT));
|
||||
}
|
||||
|
||||
int
|
||||
secpolicy_zfs_proc(cred_t *cr, proc_t *proc)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_MOUNT));
|
||||
return (priv_check_cred(cr, PRIV_VFS_MOUNT));
|
||||
}
|
||||
|
||||
int
|
||||
secpolicy_sys_config(cred_t *cr, int checkonly __unused)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_ZFS_POOL_CONFIG));
|
||||
return (priv_check_cred(cr, PRIV_ZFS_POOL_CONFIG));
|
||||
}
|
||||
|
||||
int
|
||||
secpolicy_zinject(cred_t *cr)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_ZFS_INJECT));
|
||||
return (priv_check_cred(cr, PRIV_ZFS_INJECT));
|
||||
}
|
||||
|
||||
int
|
||||
secpolicy_fs_unmount(cred_t *cr, struct mount *vfsp __unused)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_UNMOUNT));
|
||||
return (priv_check_cred(cr, PRIV_VFS_UNMOUNT));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -107,7 +107,7 @@ secpolicy_basic_link(vnode_t *vp, cred_t *cr)
|
||||
return (0);
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) == 0)
|
||||
return (0);
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_LINK));
|
||||
return (priv_check_cred(cr, PRIV_VFS_LINK));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -123,7 +123,7 @@ secpolicy_vnode_remove(vnode_t *vp, cred_t *cr)
|
||||
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) == 0)
|
||||
return (0);
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_ADMIN));
|
||||
return (priv_check_cred(cr, PRIV_VFS_ADMIN));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -133,18 +133,18 @@ secpolicy_vnode_access(cred_t *cr, vnode_t *vp, uid_t owner, accmode_t accmode)
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) == 0)
|
||||
return (0);
|
||||
|
||||
if ((accmode & VREAD) && spl_priv_check_cred(cr, PRIV_VFS_READ) != 0)
|
||||
if ((accmode & VREAD) && priv_check_cred(cr, PRIV_VFS_READ) != 0)
|
||||
return (EACCES);
|
||||
if ((accmode & VWRITE) &&
|
||||
spl_priv_check_cred(cr, PRIV_VFS_WRITE) != 0) {
|
||||
priv_check_cred(cr, PRIV_VFS_WRITE) != 0) {
|
||||
return (EACCES);
|
||||
}
|
||||
if (accmode & VEXEC) {
|
||||
if (vp->v_type == VDIR) {
|
||||
if (spl_priv_check_cred(cr, PRIV_VFS_LOOKUP) != 0)
|
||||
if (priv_check_cred(cr, PRIV_VFS_LOOKUP) != 0)
|
||||
return (EACCES);
|
||||
} else {
|
||||
if (spl_priv_check_cred(cr, PRIV_VFS_EXEC) != 0)
|
||||
if (priv_check_cred(cr, PRIV_VFS_EXEC) != 0)
|
||||
return (EACCES);
|
||||
}
|
||||
}
|
||||
@@ -201,7 +201,7 @@ secpolicy_vnode_any_access(cred_t *cr, vnode_t *vp, uid_t owner)
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
if (spl_priv_check_cred(cr, priv) == 0)
|
||||
if (priv_check_cred(cr, priv) == 0)
|
||||
return (0);
|
||||
}
|
||||
return (EPERM);
|
||||
@@ -215,7 +215,7 @@ secpolicy_vnode_setdac(vnode_t *vp, cred_t *cr, uid_t owner)
|
||||
return (0);
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) == 0)
|
||||
return (0);
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_ADMIN));
|
||||
return (priv_check_cred(cr, PRIV_VFS_ADMIN));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -265,7 +265,7 @@ secpolicy_vnode_setattr(cred_t *cr, vnode_t *vp, struct vattr *vap,
|
||||
((mask & AT_GID) && vap->va_gid != ovap->va_gid &&
|
||||
!groupmember(vap->va_gid, cr))) {
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) != 0) {
|
||||
error = spl_priv_check_cred(cr, PRIV_VFS_CHOWN);
|
||||
error = priv_check_cred(cr, PRIV_VFS_CHOWN);
|
||||
if (error)
|
||||
return (error);
|
||||
}
|
||||
@@ -309,7 +309,7 @@ secpolicy_vnode_setids_setgids(vnode_t *vp, cred_t *cr, gid_t gid)
|
||||
return (0);
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) == 0)
|
||||
return (0);
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_SETGID));
|
||||
return (priv_check_cred(cr, PRIV_VFS_SETGID));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -319,7 +319,7 @@ secpolicy_vnode_setid_retain(znode_t *zp, cred_t *cr,
|
||||
|
||||
if (secpolicy_fs_owner(ZTOV(zp)->v_mount, cr) == 0)
|
||||
return (0);
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_RETAINSUGID));
|
||||
return (priv_check_cred(cr, PRIV_VFS_RETAINSUGID));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -330,7 +330,7 @@ secpolicy_setid_clear(struct vattr *vap, vnode_t *vp, cred_t *cr)
|
||||
return;
|
||||
|
||||
if ((vap->va_mode & (S_ISUID | S_ISGID)) != 0) {
|
||||
if (spl_priv_check_cred(cr, PRIV_VFS_RETAINSUGID)) {
|
||||
if (priv_check_cred(cr, PRIV_VFS_RETAINSUGID)) {
|
||||
vap->va_mask |= AT_MODE;
|
||||
vap->va_mode &= ~(S_ISUID|S_ISGID);
|
||||
}
|
||||
@@ -352,7 +352,7 @@ secpolicy_setid_setsticky_clear(vnode_t *vp, struct vattr *vap,
|
||||
* is not a member of. Both of these are allowed in jail(8).
|
||||
*/
|
||||
if (vp->v_type != VDIR && (vap->va_mode & S_ISTXT)) {
|
||||
if (spl_priv_check_cred(cr, PRIV_VFS_STICKYFILE))
|
||||
if (priv_check_cred(cr, PRIV_VFS_STICKYFILE))
|
||||
return (EFTYPE);
|
||||
}
|
||||
/*
|
||||
@@ -368,7 +368,7 @@ secpolicy_setid_setsticky_clear(vnode_t *vp, struct vattr *vap,
|
||||
* Deny setting setuid if we are not the file owner.
|
||||
*/
|
||||
if ((vap->va_mode & S_ISUID) && ovap->va_uid != cr->cr_uid) {
|
||||
error = spl_priv_check_cred(cr, PRIV_VFS_ADMIN);
|
||||
error = priv_check_cred(cr, PRIV_VFS_ADMIN);
|
||||
if (error)
|
||||
return (error);
|
||||
}
|
||||
@@ -379,7 +379,7 @@ int
|
||||
secpolicy_fs_mount(cred_t *cr, vnode_t *mvp, struct mount *vfsp)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_MOUNT));
|
||||
return (priv_check_cred(cr, PRIV_VFS_MOUNT));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -392,7 +392,7 @@ secpolicy_vnode_owner(vnode_t *vp, cred_t *cr, uid_t owner)
|
||||
return (0);
|
||||
|
||||
/* XXX: vfs_suser()? */
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_MOUNT_OWNER));
|
||||
return (priv_check_cred(cr, PRIV_VFS_MOUNT_OWNER));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -401,14 +401,14 @@ secpolicy_vnode_chown(vnode_t *vp, cred_t *cr, uid_t owner)
|
||||
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) == 0)
|
||||
return (0);
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_CHOWN));
|
||||
return (priv_check_cred(cr, PRIV_VFS_CHOWN));
|
||||
}
|
||||
|
||||
void
|
||||
secpolicy_fs_mount_clearopts(cred_t *cr, struct mount *vfsp)
|
||||
{
|
||||
|
||||
if (spl_priv_check_cred(cr, PRIV_VFS_MOUNT_NONUSER) != 0) {
|
||||
if (priv_check_cred(cr, PRIV_VFS_MOUNT_NONUSER) != 0) {
|
||||
MNT_ILOCK(vfsp);
|
||||
vfsp->vfs_flag |= VFS_NOSETUID | MNT_USER;
|
||||
vfs_clearmntopt(vfsp, MNTOPT_SETUID);
|
||||
@@ -427,12 +427,12 @@ secpolicy_xvattr(vnode_t *vp, xvattr_t *xvap, uid_t owner, cred_t *cr,
|
||||
|
||||
if (secpolicy_fs_owner(vp->v_mount, cr) == 0)
|
||||
return (0);
|
||||
return (spl_priv_check_cred(cr, PRIV_VFS_SYSFLAGS));
|
||||
return (priv_check_cred(cr, PRIV_VFS_SYSFLAGS));
|
||||
}
|
||||
|
||||
int
|
||||
secpolicy_smb(cred_t *cr)
|
||||
{
|
||||
|
||||
return (spl_priv_check_cred(cr, PRIV_NETSMB));
|
||||
return (priv_check_cred(cr, PRIV_NETSMB));
|
||||
}
|
||||
|
||||
@@ -45,11 +45,6 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#include <vm/uma.h>
|
||||
|
||||
#if __FreeBSD_version < 1201522
|
||||
#define taskqueue_start_threads_in_proc(tqp, count, pri, proc, name, ...) \
|
||||
taskqueue_start_threads(tqp, count, pri, name, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
static uint_t taskq_tsd;
|
||||
static uma_zone_t taskq_zone;
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ mount_snapshot(kthread_t *td, vnode_t **vpp, const char *fstype, char *fspath,
|
||||
return (error);
|
||||
}
|
||||
vn_seqc_write_begin(vp);
|
||||
VOP_UNLOCK1(vp);
|
||||
VOP_UNLOCK(vp);
|
||||
|
||||
/*
|
||||
* Allocate and initialize the filesystem.
|
||||
@@ -252,10 +252,8 @@ mount_snapshot(kthread_t *td, vnode_t **vpp, const char *fstype, char *fspath,
|
||||
if (VFS_ROOT(mp, LK_EXCLUSIVE, &mvp))
|
||||
panic("mount: lost mount");
|
||||
vn_seqc_write_end(vp);
|
||||
VOP_UNLOCK1(vp);
|
||||
#if __FreeBSD_version >= 1300048
|
||||
VOP_UNLOCK(vp);
|
||||
vfs_op_exit(mp);
|
||||
#endif
|
||||
vfs_unbusy(mp);
|
||||
*vpp = mvp;
|
||||
return (0);
|
||||
@@ -275,12 +273,8 @@ void
|
||||
vn_rele_async(vnode_t *vp, taskq_t *taskq)
|
||||
{
|
||||
VERIFY3U(vp->v_usecount, >, 0);
|
||||
if (refcount_release_if_not_last(&vp->v_usecount)) {
|
||||
#if __FreeBSD_version < 1300045
|
||||
vdrop(vp);
|
||||
#endif
|
||||
if (refcount_release_if_not_last(&vp->v_usecount))
|
||||
return;
|
||||
}
|
||||
VERIFY3U(taskq_dispatch((taskq_t *)taskq,
|
||||
(task_func_t *)vrele, vp, TQ_SLEEP), !=, 0);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ zone_dataset_attach(struct ucred *cred, const char *dataset, int jailid)
|
||||
struct prison *pr;
|
||||
int dofree, error;
|
||||
|
||||
if ((error = spl_priv_check_cred(cred, PRIV_ZFS_JAIL)) != 0)
|
||||
if ((error = priv_check_cred(cred, PRIV_ZFS_JAIL)) != 0)
|
||||
return (error);
|
||||
|
||||
/* Allocate memory before we grab prison's mutex. */
|
||||
@@ -119,7 +119,7 @@ zone_dataset_detach(struct ucred *cred, const char *dataset, int jailid)
|
||||
struct prison *pr;
|
||||
int error;
|
||||
|
||||
if ((error = spl_priv_check_cred(cred, PRIV_ZFS_JAIL)) != 0)
|
||||
if ((error = priv_check_cred(cred, PRIV_ZFS_JAIL)) != 0)
|
||||
return (error);
|
||||
|
||||
sx_slock(&allprison_lock);
|
||||
|
||||
Reference in New Issue
Block a user