tmpfs_vnops.c (8d7cd10ba633309a2fa8c0d6475f85e0266e3d94) | tmpfs_vnops.c (b4a58fbf640409a1e507d9f7b411c83a3f83a2f3) |
---|---|
1/* $NetBSD: tmpfs_vnops.c,v 1.39 2007/07/23 15:41:01 jmmv Exp $ */ 2 3/*- 4 * SPDX-License-Identifier: BSD-2-Clause-NetBSD 5 * 6 * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc. 7 * All rights reserved. 8 * --- 122 unchanged lines hidden (view full) --- 131 */ 132 if ((cnp->cn_flags & ISLASTCN) && 133 (cnp->cn_nameiop == CREATE || \ 134 cnp->cn_nameiop == RENAME || 135 (cnp->cn_nameiop == DELETE && 136 cnp->cn_flags & DOWHITEOUT && 137 cnp->cn_flags & ISWHITEOUT))) { 138 error = VOP_ACCESS(dvp, VWRITE, cnp->cn_cred, | 1/* $NetBSD: tmpfs_vnops.c,v 1.39 2007/07/23 15:41:01 jmmv Exp $ */ 2 3/*- 4 * SPDX-License-Identifier: BSD-2-Clause-NetBSD 5 * 6 * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc. 7 * All rights reserved. 8 * --- 122 unchanged lines hidden (view full) --- 131 */ 132 if ((cnp->cn_flags & ISLASTCN) && 133 (cnp->cn_nameiop == CREATE || \ 134 cnp->cn_nameiop == RENAME || 135 (cnp->cn_nameiop == DELETE && 136 cnp->cn_flags & DOWHITEOUT && 137 cnp->cn_flags & ISWHITEOUT))) { 138 error = VOP_ACCESS(dvp, VWRITE, cnp->cn_cred, |
139 cnp->cn_thread); | 139 curthread); |
140 if (error != 0) 141 goto out; 142 143 /* 144 * Keep the component name in the buffer for 145 * future uses. 146 */ 147 cnp->cn_flags |= SAVENAME; --- 27 unchanged lines hidden (view full) --- 175 * If we are deleting or renaming the entry, keep 176 * track of its tmpfs_dirent so that it can be 177 * easily deleted later. 178 */ 179 if ((cnp->cn_flags & ISLASTCN) && 180 (cnp->cn_nameiop == DELETE || 181 cnp->cn_nameiop == RENAME)) { 182 error = VOP_ACCESS(dvp, VWRITE, cnp->cn_cred, | 140 if (error != 0) 141 goto out; 142 143 /* 144 * Keep the component name in the buffer for 145 * future uses. 146 */ 147 cnp->cn_flags |= SAVENAME; --- 27 unchanged lines hidden (view full) --- 175 * If we are deleting or renaming the entry, keep 176 * track of its tmpfs_dirent so that it can be 177 * easily deleted later. 178 */ 179 if ((cnp->cn_flags & ISLASTCN) && 180 (cnp->cn_nameiop == DELETE || 181 cnp->cn_nameiop == RENAME)) { 182 error = VOP_ACCESS(dvp, VWRITE, cnp->cn_cred, |
183 cnp->cn_thread); | 183 curthread); |
184 if (error != 0) 185 goto out; 186 187 /* Allocate a new vnode on the matching entry. */ 188 error = tmpfs_alloc_vp(dvp->v_mount, tnode, 189 cnp->cn_lkflags, vpp); 190 if (error != 0) 191 goto out; 192 193 if ((dnode->tn_mode & S_ISTXT) && 194 VOP_ACCESS(dvp, VADMIN, cnp->cn_cred, | 184 if (error != 0) 185 goto out; 186 187 /* Allocate a new vnode on the matching entry. */ 188 error = tmpfs_alloc_vp(dvp->v_mount, tnode, 189 cnp->cn_lkflags, vpp); 190 if (error != 0) 191 goto out; 192 193 if ((dnode->tn_mode & S_ISTXT) && 194 VOP_ACCESS(dvp, VADMIN, cnp->cn_cred, |
195 cnp->cn_thread) && VOP_ACCESS(*vpp, VADMIN, 196 cnp->cn_cred, cnp->cn_thread)) { | 195 curthread) && VOP_ACCESS(*vpp, VADMIN, 196 cnp->cn_cred, curthread)) { |
197 error = EPERM; 198 vput(*vpp); 199 *vpp = NULL; 200 goto out; 201 } 202 cnp->cn_flags |= SAVENAME; 203 } else { 204 error = tmpfs_alloc_vp(dvp->v_mount, tnode, --- 1677 unchanged lines hidden --- | 197 error = EPERM; 198 vput(*vpp); 199 *vpp = NULL; 200 goto out; 201 } 202 cnp->cn_flags |= SAVENAME; 203 } else { 204 error = tmpfs_alloc_vp(dvp->v_mount, tnode, --- 1677 unchanged lines hidden --- |