diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c index c6dd420c4034..460776cd69cd 100644 --- a/fs/fuse/dev_uring.c +++ b/fs/fuse/dev_uring.c @@ -893,6 +893,12 @@ static int fuse_uring_args_to_ring(struct fuse_req *req, fuse_copy_finish(&cs); if (err) { pr_info_ratelimited("%s fuse_copy_args failed\n", __func__); + /* + * fuse-uring does not use pipe buffers, so -EIO here can only + * mean the in-args did not fit ent->payload + */ + if (err == -EIO && args->opcode == FUSE_SETXATTR) + err = -E2BIG; return err; }