Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F171044404
D59503.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D59503.id.diff
View Options
diff --git a/sys/fs/p9fs/p9fs.h b/sys/fs/p9fs/p9fs.h
--- a/sys/fs/p9fs/p9fs.h
+++ b/sys/fs/p9fs/p9fs.h
@@ -114,6 +114,7 @@
#define P9FS_NODE_ROOT 0x2 /* indicating root p9fs node */
#define P9FS_NODE_DELETED 0x4 /* indicating file or directory delete */
#define P9FS_NODE_IN_SESSION 0x8 /* p9fs_node is in the session - virt_node_list */
+#define P9FS_NODE_SKIP_VFID 0x10 /* indicating whether to clunk vfid */
#define IS_ROOT(node) (((node)->flags & P9FS_NODE_ROOT) != 0)
#define P9FS_NODE_SETF(n, f) atomic_set_int(&(n)->flags, (f))
diff --git a/sys/fs/p9fs/p9fs_subr.c b/sys/fs/p9fs/p9fs_subr.c
--- a/sys/fs/p9fs/p9fs_subr.c
+++ b/sys/fs/p9fs/p9fs_subr.c
@@ -191,9 +191,11 @@
{
struct p9_fid *fid, *tfid;
- STAILQ_FOREACH_SAFE(fid, &np->vfid_list, fid_next, tfid) {
- STAILQ_REMOVE(&np->vfid_list, fid, p9_fid, fid_next);
- p9_client_clunk(fid);
+ if ((np->flags & P9FS_NODE_SKIP_VFID) == 0) {
+ STAILQ_FOREACH_SAFE(fid, &np->vfid_list, fid_next, tfid) {
+ STAILQ_REMOVE(&np->vfid_list, fid, p9_fid, fid_next);
+ p9_client_clunk(fid);
+ }
}
if (!leave_ofids) {
diff --git a/sys/fs/p9fs/p9fs_vfsops.c b/sys/fs/p9fs/p9fs_vfsops.c
--- a/sys/fs/p9fs/p9fs_vfsops.c
+++ b/sys/fs/p9fs/p9fs_vfsops.c
@@ -336,6 +336,7 @@
/*Fill the name of the file in inode */
inode->i_name = malloc(strlen(name)+1, M_TEMP, M_NOWAIT | M_ZERO);
strlcpy(inode->i_name, name, strlen(name)+1);
+ P9FS_NODE_SETF(np, P9FS_NODE_SKIP_VFID);
} else {
vp->v_type = VDIR; /* root vp is a directory */
vp->v_vflag |= VV_ROOT;
@@ -374,6 +375,7 @@
P9FS_NODE_SETF(np, P9FS_NODE_IN_SESSION);
P9FS_UNLOCK(vses);
vn_set_state(vp, VSTATE_CONSTRUCTED);
+ P9FS_NODE_CLRF(np, P9FS_NODE_SKIP_VFID);
*vpp = vp;
return (0);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Sep 9, 9:10 AM (11 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38576608
Default Alt Text
D59503.id.diff (1 KB)
Attached To
Mode
D59503: p9fs: fix use-after-free when p9fs_vget_common fails
Attached
Detach File
Event Timeline
Log In to Comment