bcachefs: Fix for __readahead_batch getting partial batch
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 29 Nov 2020 21:00:47 +0000 (16:00 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:48 +0000 (17:08 -0400)
We were incorrectly ignoring the return value of __readahead_batch,
leading to a null ptr deref in __bch2_page_state_create().

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/fs-io.c

index 1afdd775ffb3b2c051e07e8fbc3540d356f84158..9c3b11f414b5ed7f36d3ca2fe74573b0d59ed88d 100644 (file)
@@ -667,7 +667,7 @@ static int readpages_iter_init(struct readpages_iter *iter,
        if (!iter->pages)
                return -ENOMEM;
 
-       __readahead_batch(ractl, iter->pages, nr_pages);
+       nr_pages = __readahead_batch(ractl, iter->pages, nr_pages);
        for (i = 0; i < nr_pages; i++) {
                __bch2_page_state_create(iter->pages[i], __GFP_NOFAIL);
                put_page(iter->pages[i]);