ceph: fix memory leaks in ceph_mdsc_build_path()

Add __putname() calls to error code paths that did not free the "path"
pointer obtained by __getname().  If ownership of this pointer is not
passed to the caller via path_info.path, the function must free it
before returning.

Cc: stable@vger.kernel.org
Fixes: 3fd945a79e ("ceph: encode encrypted name in ceph_mdsc_build_path and dentry release")
Fixes: 550f7ca98e ("ceph: give up on paths longer than PATH_MAX")
Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
Max Kellermann 2026-02-24 14:26:57 +01:00 committed by Ilya Dryomov
parent 43323a5934
commit 040d159a45
1 changed files with 3 additions and 0 deletions

View File

@ -2768,6 +2768,7 @@ retry:
if (ret < 0) {
dput(parent);
dput(cur);
__putname(path);
return ERR_PTR(ret);
}
@ -2777,6 +2778,7 @@ retry:
if (len < 0) {
dput(parent);
dput(cur);
__putname(path);
return ERR_PTR(len);
}
}
@ -2813,6 +2815,7 @@ retry:
* cannot ever succeed. Creating paths that long is
* possible with Ceph, but Linux cannot use them.
*/
__putname(path);
return ERR_PTR(-ENAMETOOLONG);
}