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 ---