]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commit
client: Gracefully handle empty pathname for chownat()
authorAnoop C S <anoopcs@cryptolab.net>
Fri, 20 Sep 2024 08:49:01 +0000 (14:19 +0530)
committerAnoop C S <anoopcs@cryptolab.net>
Thu, 20 Mar 2025 09:52:14 +0000 (15:22 +0530)
commit9f9e68d50149bbaf4f034b0d9c91f004ddcc5bcd
tree9c486c59922741ba05934e9588d14cac837534a9
parent5d24732275c992a8453c858005776a6e45624286
client: Gracefully handle empty pathname for chownat()

man fchownat(2)[1] says the following:
. . .
AT_EMPTY_PATH (since Linux 2.6.39)
    If pathname is an empty string, operate on the file referred to by
    dirfd (which may have been obtained using the open(2) O_PATH flag).
    In this case, dirfd can refer to any type of file, not just a
    directory. If dirfd is AT_FDCWD, the call operates on the current
    working directory.
. . .

Look out for an empty pathname and use the relative fd's inode in the
presence of AT_EMPTY_PATH flag before calling internal _setattr().

Fixes: https://tracker.ceph.com/issues/68189
Review with: git show -w

Note: path_walk() refactor from https://github.com/ceph/ceph/pull/60746
included the core changes required here and thus src/client/Client.cc
changes have been removed from the cherry-pick as they conflict at the
same time.

[1] https://www.man7.org/linux/man-pages/man2/fchownat.2.html

Signed-off-by: Anoop C S <anoopcs@cryptolab.net>
(cherry picked from commit 829f38899226fcd1f603ba446b018f53c5b0921d)
src/include/cephfs/libcephfs.h
src/test/libcephfs/test.cc