diff options
author | pjd <pjd@FreeBSD.org> | 2013-11-25 21:17:14 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2013-11-25 21:17:14 +0000 |
commit | b9061d4b3d5d7d3aaa3a7c3431088a7a681f91ed (patch) | |
tree | fcd81e7d0955228512704bbf4a4b5ff87f4ee0f2 | |
parent | 1c22c1352a68318712aa7e8d0d688fa1a558af3c (diff) | |
download | FreeBSD-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.c | 5 |
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. |