* [PATCH 01/06] 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl [not found] <20220612085330.1451496-1-asmadeus@codewreck.org> @ 2022-06-12 8:53 ` Dominique Martinet 2022-06-13 16:27 ` Tyler Hicks 2022-06-14 13:17 ` Christian Schoenebeck 2022-06-12 8:53 ` [PATCH 02/06] 9p: fix fid refcount leak in v9fs_vfs_get_link Dominique Martinet 1 sibling, 2 replies; 6+ messages in thread From: Dominique Martinet @ 2022-06-12 8:53 UTC (permalink / raw) To: Christian Schoenebeck, Tyler Hicks, Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet, Jianyong Wu Cc: v9fs-developer, linux-kernel, stable We need to release directory fid if we fail halfway through open This fixes fid leaking with xfstests generic 531 Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct") Cc: stable@vger.kernel.org Reported-by: Tyler Hicks <tyhicks@linux.microsoft.com> Signed-off-by: Dominique Martinet <asmadeus@codewreck.org> --- fs/9p/vfs_inode_dotl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index d17502a738a9..b6eb1160296c 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c @@ -274,6 +274,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, if (IS_ERR(ofid)) { err = PTR_ERR(ofid); p9_debug(P9_DEBUG_VFS, "p9_client_walk failed %d\n", err); + p9_client_clunk(dfid); goto out; } @@ -285,6 +286,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, if (err) { p9_debug(P9_DEBUG_VFS, "Failed to get acl values in creat %d\n", err); + p9_client_clunk(dfid); goto error; } err = p9_client_create_dotl(ofid, name, v9fs_open_to_dotl_flags(flags), @@ -292,6 +294,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, if (err < 0) { p9_debug(P9_DEBUG_VFS, "p9_client_open_dotl failed in creat %d\n", err); + p9_client_clunk(dfid); goto error; } v9fs_invalidate_inode_attr(dir); -- 2.35.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 01/06] 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl 2022-06-12 8:53 ` [PATCH 01/06] 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl Dominique Martinet @ 2022-06-13 16:27 ` Tyler Hicks 2022-06-14 13:17 ` Christian Schoenebeck 1 sibling, 0 replies; 6+ messages in thread From: Tyler Hicks @ 2022-06-13 16:27 UTC (permalink / raw) To: Dominique Martinet Cc: Christian Schoenebeck, Eric Van Hensbergen, Latchesar Ionkov, Jianyong Wu, v9fs-developer, linux-kernel, stable On 2022-06-12 17:53:24, Dominique Martinet wrote: > We need to release directory fid if we fail halfway through open > > This fixes fid leaking with xfstests generic 531 > > Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct") > Cc: stable@vger.kernel.org > Reported-by: Tyler Hicks <tyhicks@linux.microsoft.com> Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com> Tyler > Signed-off-by: Dominique Martinet <asmadeus@codewreck.org> > --- > fs/9p/vfs_inode_dotl.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c > index d17502a738a9..b6eb1160296c 100644 > --- a/fs/9p/vfs_inode_dotl.c > +++ b/fs/9p/vfs_inode_dotl.c > @@ -274,6 +274,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, > if (IS_ERR(ofid)) { > err = PTR_ERR(ofid); > p9_debug(P9_DEBUG_VFS, "p9_client_walk failed %d\n", err); > + p9_client_clunk(dfid); > goto out; > } > > @@ -285,6 +286,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, > if (err) { > p9_debug(P9_DEBUG_VFS, "Failed to get acl values in creat %d\n", > err); > + p9_client_clunk(dfid); > goto error; > } > err = p9_client_create_dotl(ofid, name, v9fs_open_to_dotl_flags(flags), > @@ -292,6 +294,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, > if (err < 0) { > p9_debug(P9_DEBUG_VFS, "p9_client_open_dotl failed in creat %d\n", > err); > + p9_client_clunk(dfid); > goto error; > } > v9fs_invalidate_inode_attr(dir); > -- > 2.35.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 01/06] 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl 2022-06-12 8:53 ` [PATCH 01/06] 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl Dominique Martinet 2022-06-13 16:27 ` Tyler Hicks @ 2022-06-14 13:17 ` Christian Schoenebeck 1 sibling, 0 replies; 6+ messages in thread From: Christian Schoenebeck @ 2022-06-14 13:17 UTC (permalink / raw) To: Tyler Hicks, Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet, Jianyong Wu, Dominique Martinet Cc: v9fs-developer, linux-kernel, stable On Sonntag, 12. Juni 2022 10:53:24 CEST Dominique Martinet wrote: > We need to release directory fid if we fail halfway through open > > This fixes fid leaking with xfstests generic 531 > > Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct") > Cc: stable@vger.kernel.org > Reported-by: Tyler Hicks <tyhicks@linux.microsoft.com> > Signed-off-by: Dominique Martinet <asmadeus@codewreck.org> Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com> > --- > fs/9p/vfs_inode_dotl.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c > index d17502a738a9..b6eb1160296c 100644 > --- a/fs/9p/vfs_inode_dotl.c > +++ b/fs/9p/vfs_inode_dotl.c > @@ -274,6 +274,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct > dentry *dentry, if (IS_ERR(ofid)) { > err = PTR_ERR(ofid); > p9_debug(P9_DEBUG_VFS, "p9_client_walk failed %d\n", err); > + p9_client_clunk(dfid); > goto out; > } > > @@ -285,6 +286,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct > dentry *dentry, if (err) { > p9_debug(P9_DEBUG_VFS, "Failed to get acl values in creat %d\n", > err); > + p9_client_clunk(dfid); > goto error; > } > err = p9_client_create_dotl(ofid, name, v9fs_open_to_dotl_flags(flags), > @@ -292,6 +294,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct > dentry *dentry, if (err < 0) { > p9_debug(P9_DEBUG_VFS, "p9_client_open_dotl failed in creat %d\n", > err); > + p9_client_clunk(dfid); > goto error; > } > v9fs_invalidate_inode_attr(dir); ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 02/06] 9p: fix fid refcount leak in v9fs_vfs_get_link [not found] <20220612085330.1451496-1-asmadeus@codewreck.org> 2022-06-12 8:53 ` [PATCH 01/06] 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl Dominique Martinet @ 2022-06-12 8:53 ` Dominique Martinet 2022-06-13 16:29 ` Tyler Hicks 2022-06-14 13:19 ` Christian Schoenebeck 1 sibling, 2 replies; 6+ messages in thread From: Dominique Martinet @ 2022-06-12 8:53 UTC (permalink / raw) To: Christian Schoenebeck, Tyler Hicks, Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet, Jianyong Wu Cc: v9fs-developer, linux-kernel, stable we check for protocol version later than required, after a fid has been obtained. Just move the version check earlier. Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct") Cc: stable@vger.kernel.org Signed-off-by: Dominique Martinet <asmadeus@codewreck.org> --- fs/9p/vfs_inode.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 55367ecb9442..18c780ffd4b5 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -1250,15 +1250,15 @@ static const char *v9fs_vfs_get_link(struct dentry *dentry, return ERR_PTR(-ECHILD); v9ses = v9fs_dentry2v9ses(dentry); - fid = v9fs_fid_lookup(dentry); + if (!v9fs_proto_dotu(v9ses)) + return ERR_PTR(-EBADF); + p9_debug(P9_DEBUG_VFS, "%pd\n", dentry); + fid = v9fs_fid_lookup(dentry); if (IS_ERR(fid)) return ERR_CAST(fid); - if (!v9fs_proto_dotu(v9ses)) - return ERR_PTR(-EBADF); - st = p9_client_stat(fid); p9_client_clunk(fid); if (IS_ERR(st)) -- 2.35.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 02/06] 9p: fix fid refcount leak in v9fs_vfs_get_link 2022-06-12 8:53 ` [PATCH 02/06] 9p: fix fid refcount leak in v9fs_vfs_get_link Dominique Martinet @ 2022-06-13 16:29 ` Tyler Hicks 2022-06-14 13:19 ` Christian Schoenebeck 1 sibling, 0 replies; 6+ messages in thread From: Tyler Hicks @ 2022-06-13 16:29 UTC (permalink / raw) To: Dominique Martinet Cc: Christian Schoenebeck, Eric Van Hensbergen, Latchesar Ionkov, Jianyong Wu, v9fs-developer, linux-kernel, stable On 2022-06-12 17:53:25, Dominique Martinet wrote: > we check for protocol version later than required, after a fid has > been obtained. Just move the version check earlier. > > Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct") > Cc: stable@vger.kernel.org Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com> Tyler > Signed-off-by: Dominique Martinet <asmadeus@codewreck.org> > --- > fs/9p/vfs_inode.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index 55367ecb9442..18c780ffd4b5 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -1250,15 +1250,15 @@ static const char *v9fs_vfs_get_link(struct dentry *dentry, > return ERR_PTR(-ECHILD); > > v9ses = v9fs_dentry2v9ses(dentry); > - fid = v9fs_fid_lookup(dentry); > + if (!v9fs_proto_dotu(v9ses)) > + return ERR_PTR(-EBADF); > + > p9_debug(P9_DEBUG_VFS, "%pd\n", dentry); > + fid = v9fs_fid_lookup(dentry); > > if (IS_ERR(fid)) > return ERR_CAST(fid); > > - if (!v9fs_proto_dotu(v9ses)) > - return ERR_PTR(-EBADF); > - > st = p9_client_stat(fid); > p9_client_clunk(fid); > if (IS_ERR(st)) > -- > 2.35.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 02/06] 9p: fix fid refcount leak in v9fs_vfs_get_link 2022-06-12 8:53 ` [PATCH 02/06] 9p: fix fid refcount leak in v9fs_vfs_get_link Dominique Martinet 2022-06-13 16:29 ` Tyler Hicks @ 2022-06-14 13:19 ` Christian Schoenebeck 1 sibling, 0 replies; 6+ messages in thread From: Christian Schoenebeck @ 2022-06-14 13:19 UTC (permalink / raw) To: Tyler Hicks, Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet, Jianyong Wu, v9fs-developer Cc: linux-kernel, stable On Sonntag, 12. Juni 2022 10:53:25 CEST Dominique Martinet wrote: > we check for protocol version later than required, after a fid has > been obtained. Just move the version check earlier. > > Fixes: 6636b6dcc3db ("9p: add refcount to p9_fid struct") > Cc: stable@vger.kernel.org > Signed-off-by: Dominique Martinet <asmadeus@codewreck.org> > --- Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com> > fs/9p/vfs_inode.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c > index 55367ecb9442..18c780ffd4b5 100644 > --- a/fs/9p/vfs_inode.c > +++ b/fs/9p/vfs_inode.c > @@ -1250,15 +1250,15 @@ static const char *v9fs_vfs_get_link(struct dentry > *dentry, return ERR_PTR(-ECHILD); > > v9ses = v9fs_dentry2v9ses(dentry); > - fid = v9fs_fid_lookup(dentry); > + if (!v9fs_proto_dotu(v9ses)) > + return ERR_PTR(-EBADF); > + > p9_debug(P9_DEBUG_VFS, "%pd\n", dentry); > + fid = v9fs_fid_lookup(dentry); > > if (IS_ERR(fid)) > return ERR_CAST(fid); > > - if (!v9fs_proto_dotu(v9ses)) > - return ERR_PTR(-EBADF); > - > st = p9_client_stat(fid); > p9_client_clunk(fid); > if (IS_ERR(st)) ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-06-14 13:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20220612085330.1451496-1-asmadeus@codewreck.org>
2022-06-12 8:53 ` [PATCH 01/06] 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl Dominique Martinet
2022-06-13 16:27 ` Tyler Hicks
2022-06-14 13:17 ` Christian Schoenebeck
2022-06-12 8:53 ` [PATCH 02/06] 9p: fix fid refcount leak in v9fs_vfs_get_link Dominique Martinet
2022-06-13 16:29 ` Tyler Hicks
2022-06-14 13:19 ` Christian Schoenebeck
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox