--- /dev/null
+From a71874379ec8c6e788a61d71b3ad014a8d9a5c08 Mon Sep 17 00:00:00 2001
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Mon, 30 Sep 2024 14:49:47 -0400
+Subject: xattr: switch to CLASS(fd)
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+commit a71874379ec8c6e788a61d71b3ad014a8d9a5c08 upstream.
+
+Reviewed-by: Christian Brauner <brauner@kernel.org>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/xattr.c | 35 ++++++++++++++---------------------
+ 1 file changed, 14 insertions(+), 21 deletions(-)
+
+--- a/fs/xattr.c
++++ b/fs/xattr.c
+@@ -697,9 +697,9 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, cons
+ int error;
+
+ CLASS(fd, f)(fd);
+- if (!fd_file(f))
+- return -EBADF;
+
++ if (fd_empty(f))
++ return -EBADF;
+ audit_file(fd_file(f));
+ error = setxattr_copy(name, &ctx);
+ if (error)
+@@ -809,16 +809,13 @@ SYSCALL_DEFINE4(lgetxattr, const char __
+ SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
+ void __user *, value, size_t, size)
+ {
+- struct fd f = fdget(fd);
+- ssize_t error = -EBADF;
++ CLASS(fd, f)(fd);
+
+- if (!fd_file(f))
+- return error;
++ if (fd_empty(f))
++ return -EBADF;
+ audit_file(fd_file(f));
+- error = getxattr(file_mnt_idmap(fd_file(f)), fd_file(f)->f_path.dentry,
++ return getxattr(file_mnt_idmap(fd_file(f)), fd_file(f)->f_path.dentry,
+ name, value, size);
+- fdput(f);
+- return error;
+ }
+
+ /*
+@@ -885,15 +882,12 @@ SYSCALL_DEFINE3(llistxattr, const char _
+
+ SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
+ {
+- struct fd f = fdget(fd);
+- ssize_t error = -EBADF;
++ CLASS(fd, f)(fd);
+
+- if (!fd_file(f))
+- return error;
++ if (fd_empty(f))
++ return -EBADF;
+ audit_file(fd_file(f));
+- error = listxattr(fd_file(f)->f_path.dentry, list, size);
+- fdput(f);
+- return error;
++ return listxattr(fd_file(f)->f_path.dentry, list, size);
+ }
+
+ /*
+@@ -950,12 +944,12 @@ SYSCALL_DEFINE2(lremovexattr, const char
+
+ SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
+ {
+- struct fd f = fdget(fd);
++ CLASS(fd, f)(fd);
+ char kname[XATTR_NAME_MAX + 1];
+- int error = -EBADF;
++ int error;
+
+- if (!fd_file(f))
+- return error;
++ if (fd_empty(f))
++ return -EBADF;
+ audit_file(fd_file(f));
+
+ error = strncpy_from_user(kname, name, sizeof(kname));
+@@ -970,7 +964,6 @@ SYSCALL_DEFINE2(fremovexattr, int, fd, c
+ fd_file(f)->f_path.dentry, kname);
+ mnt_drop_write_file(fd_file(f));
+ }
+- fdput(f);
+ return error;
+ }
+