summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2013-11-25 21:17:14 +0000
committerpjd <pjd@FreeBSD.org>2013-11-25 21:17:14 +0000
commitb9061d4b3d5d7d3aaa3a7c3431088a7a681f91ed (patch)
treefcd81e7d0955228512704bbf4a4b5ff87f4ee0f2
parent1c22c1352a68318712aa7e8d0d688fa1a558af3c (diff)
downloadFreeBSD-src-b9061d4b3d5d7d3aaa3a7c3431088a7a681f91ed.zip
FreeBSD-src-b9061d4b3d5d7d3aaa3a7c3431088a7a681f91ed.tar.gz
When append-only, immutable or read-only flag is set don't allow for
hard links creation. This matches UFS behaviour. Reported by: Oleg Ginzburg <olevole@olevole.ru> MFC after: 1 month
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
index 87d8d64..cb6267b 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
@@ -4317,6 +4317,11 @@ zfs_link(vnode_t *tdvp, vnode_t *svp, char *name, cred_t *cr,
szp = VTOZ(svp);
ZFS_VERIFY_ZP(szp);
+ if (szp->z_pflags & (ZFS_APPENDONLY | ZFS_IMMUTABLE | ZFS_READONLY)) {
+ ZFS_EXIT(zfsvfs);
+ return (SET_ERROR(EPERM));
+ }
+
/*
* We check z_zfsvfs rather than v_vfsp here, because snapshots and the
* ctldir appear to have the same v_vfsp.
OpenPOWER on IntegriCloud