From 4884b8ae4c1103933d2310c7b1dccf100145f5f8 Mon Sep 17 00:00:00 2001 From: Sandeep Dhavale Date: Tue, 14 Apr 2026 15:07:58 -0700 Subject: [PATCH] ANDROID: fuse: Open-code vma_set_file() logic in fuse_backing_mmap() Manual manipulation of vma->vm_file and file reference counts in fuse_backing_mmap() is error-prone. Open-code the logic of vma_set_file() using swap() to safely transfer the file reference and ensure proper reference counting during VMA setup, as vma_set_file() is not available in this kernel version. Bug: 498749316 Signed-off-by: Sandeep Dhavale Cherrypick-From: https://android-review.googlesource.com/q/commit:5c3d7b8761264e2a2deb121020bb933273b240ba Merged-In: I22ba0618f9fde6b698aeeeff2005830c4392969c Change-Id: I22ba0618f9fde6b698aeeeff2005830c4392969c [dhavale: as mentioned in updated commit message, this patch is adjusted to account for lack of vma_set_file() helper ] --- fs/fuse/backing.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index e9533afd5961..013a03259f0c 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -1064,14 +1064,12 @@ ssize_t fuse_backing_mmap(struct file *file, struct vm_area_struct *vma) if (WARN_ON(file != vma->vm_file)) return -EIO; - vma->vm_file = get_file(backing_file); - + get_file(backing_file); + swap(vma->vm_file, backing_file); + fput(backing_file); ret = call_mmap(vma->vm_file, vma); - if (ret) - fput(backing_file); - else - fput(file); + return ret; if (file->f_flags & O_NOATIME) return ret;