]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
ceph: fix a buffer leak in __ceph_setxattr()
authorViacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Thu, 9 Apr 2026 19:26:02 +0000 (12:26 -0700)
committerViacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Wed, 15 Apr 2026 18:42:53 +0000 (11:42 -0700)
The old_blob in __ceph_setxattr() can store
ci->i_xattrs.prealloc_blob value during the retry.
However, it is never called the ceph_buffer_put()
for the old_blob object. This patch fixes the issue of
the buffer leak.

Signed-off-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
cc: Alex Markuze <amarkuze@redhat.com>
cc: Ilya Dryomov <idryomov@gmail.com>
cc: Patrick Donnelly <pdonnell@redhat.com>
cc: Ceph Development <ceph-devel@vger.kernel.org>

fs/ceph/xattr.c

index 21a68b13a51f336926660d571ba23552c440088b..c61e5be7ce17b74c614c858af1d2cb4020e6d9f6 100644 (file)
@@ -1296,6 +1296,7 @@ retry:
 
 do_sync:
        spin_unlock(&ci->i_ceph_lock);
+       ceph_buffer_put(old_blob);
 do_sync_unlocked:
        if (lock_snap_rwsem)
                up_read(&mdsc->snap_rwsem);