if (!(dir_fp->daccess & FILE_LIST_DIRECTORY_LE) ||
            inode_permission(&init_user_ns, file_inode(dir_fp->filp),
                             MAY_READ | MAY_EXEC)) {
-               pr_err("no right to enumerate directory (%s)\n",
-                      FP_FILENAME(dir_fp));
+               pr_err("no right to enumerate directory (%pd)\n",
+                      dir_fp->filp->f_path.dentry);
                rc = -EACCES;
                goto err_out2;
        }
 {
        struct ksmbd_conn *conn = work->conn;
        struct smb2_file_alt_name_info *file_info;
+       struct dentry *dentry = fp->filp->f_path.dentry;
        int conv_len;
-       char *filename;
 
-       filename = (char *)FP_FILENAME(fp);
+       spin_lock(&dentry->d_lock);
        file_info = (struct smb2_file_alt_name_info *)rsp->Buffer;
        conv_len = ksmbd_extract_shortname(conn,
-                                          filename,
+                                          dentry->d_name.name,
                                           file_info->FileName);
+       spin_unlock(&dentry->d_lock);
        file_info->FileNameLength = cpu_to_le32(conv_len);
        rsp->OutputBufferLength =
                cpu_to_le32(sizeof(struct smb2_file_alt_name_info) + conv_len);
                goto out;
        }
 
-       ksmbd_debug(SMB, "filename %s, offset %lld, len %zu\n", FP_FILENAME(fp),
-                   offset, length);
+       ksmbd_debug(SMB, "filename %pd, offset %lld, len %zu\n",
+                   fp->filp->f_path.dentry, offset, length);
 
        work->aux_payload_buf = kvmalloc(length, GFP_KERNEL | __GFP_ZERO);
        if (!work->aux_payload_buf) {
                if (le32_to_cpu(req->Flags) & SMB2_WRITEFLAG_WRITE_THROUGH)
                        writethrough = true;
 
-               ksmbd_debug(SMB, "filename %s, offset %lld, len %zu\n",
-                           FP_FILENAME(fp), offset, length);
+               ksmbd_debug(SMB, "filename %pd, offset %lld, len %zu\n",
+                           fp->filp->f_path.dentry, offset, length);
                err = ksmbd_vfs_write(work, fp, data_buf, length, &offset,
                                      writethrough, &nbytes);
                if (err < 0)
 
 
        if (work->conn->connection_type) {
                if (!(fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
-                       pr_err("no right to read(%s)\n", FP_FILENAME(fp));
+                       pr_err("no right to read(%pd)\n",
+                              fp->filp->f_path.dentry);
                        return -EACCES;
                }
        }
 
        if (sess->conn->connection_type) {
                if (!(fp->daccess & FILE_WRITE_DATA_LE)) {
-                       pr_err("no right to write(%s)\n", FP_FILENAME(fp));
+                       pr_err("no right to write(%pd)\n",
+                              fp->filp->f_path.dentry);
                        err = -EACCES;
                        goto out;
                }
        if (sync) {
                err = vfs_fsync_range(filp, offset, offset + *written, 0);
                if (err < 0)
-                       pr_err("fsync failed for filename = %s, err = %d\n",
-                              FP_FILENAME(fp), err);
+                       pr_err("fsync failed for filename = %pd, err = %d\n",
+                              fp->filp->f_path.dentry, err);
        }
 
 out:
        *total_size_written = 0;
 
        if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
-               pr_err("no right to read(%s)\n", FP_FILENAME(src_fp));
+               pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
                return -EACCES;
        }
        if (!(dst_fp->daccess & (FILE_WRITE_DATA_LE | FILE_APPEND_DATA_LE))) {
-               pr_err("no right to write(%s)\n", FP_FILENAME(dst_fp));
+               pr_err("no right to write(%pd)\n", dst_fp->filp->f_path.dentry);
                return -EACCES;
        }