Skip to content

Commit 122edb4

Browse files
tehcasterheftig
authored andcommitted
fuse: prevent folio use-after-free in readahead
Signed-off-by: Vlastimil Babka <[email protected]> Cherry-picked-for: https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/issues/110
1 parent cb0787d commit 122edb4

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

fs/fuse/file.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -955,8 +955,10 @@ static void fuse_readpages_end(struct fuse_mount *fm, struct fuse_args *args,
955955
fuse_invalidate_atime(inode);
956956
}
957957

958-
for (i = 0; i < ap->num_folios; i++)
958+
for (i = 0; i < ap->num_folios; i++) {
959959
folio_end_read(ap->folios[i], !err);
960+
folio_put(ap->folios[i]);
961+
}
960962
if (ia->ff)
961963
fuse_file_put(ia->ff, false);
962964

@@ -1048,7 +1050,7 @@ static void fuse_readahead(struct readahead_control *rac)
10481050
ap = &ia->ap;
10491051

10501052
while (ap->num_folios < cur_pages) {
1051-
folio = readahead_folio(rac);
1053+
folio = __readahead_folio(rac);
10521054
ap->folios[ap->num_folios] = folio;
10531055
ap->descs[ap->num_folios].length = folio_size(folio);
10541056
ap->num_folios++;

0 commit comments

Comments
 (0)