The branch, master has been updated
       via  c0e5ffdc16b vfs_ceph: Handle absolute paths with dirfd = ‑1 in 
openat
      from  4468d8274c6 s3:utils: Fix misleading recursive flag in smbget error 
message

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c0e5ffdc16b7bc8aae869c294c3c4a803859482c
Author: Anoop C S <[email protected]>
Date:   Sun Feb 15 09:57:18 2026 +0530

    vfs_ceph: Handle absolute paths with dirfd = ‑1 in openat
    
    ceph_openat() does not follow the convention of ignoring 'dirfd' when
    the pathname is absolute, resulting in EBADF. As a temporary workaround,
    handle this special case in cephwrap_openat() by calling ceph_open()
    directly instead of ceph_openat().
    
    Signed-off-by: Anoop C S <[email protected]>
    Reviewed-by: John Mulligan <[email protected]>
    Reviewed-by: Shwetha K Acharya <[email protected]>
    Reviewed-by: Xavi Hernandez <[email protected]>
    
    Autobuild-User(master): Anoop C S <[email protected]>
    Autobuild-Date(master): Mon Feb 16 17:27:03 UTC 2026 on atb-devel-224

-----------------------------------------------------------------------

Summary of changes:
 source3/modules/vfs_ceph.c | 9 +++++++++
 1 file changed, 9 insertions(+)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index e927f41dd03..830b8b17a4b 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -509,12 +509,21 @@ static int cephwrap_openat(struct vfs_handle_struct 
*handle,
                became_root = true;
        }
 
+       if (dirfd == -1 && smb_fname->base_name[0] == '/') {
+               result = ceph_open(handle->data,
+                                  smb_fname->base_name,
+                                  flags,
+                                  mode);
+               goto done;
+       }
+
        result = ceph_openat(handle->data,
                             dirfd,
                             smb_fname->base_name,
                             flags,
                             mode);
 
+done:
        if (became_root) {
                unbecome_root();
        }


-- 
Samba Shared Repository

Reply via email to