Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm/filemap: don't cast ->readpage to filler_t for do_read_cache_page

We can just pass a NULL filler and do the right thing inside of
do_read_cache_page based on the NULL parameter.

Link: http://lkml.kernel.org/r/20190520055731.24538-3-hch@lst.de
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Christoph Hellwig and committed by
Linus Torvalds
6c45b454 d322a8e5

+7 -6
+1 -2
include/linux/pagemap.h
··· 383 383 static inline struct page *read_mapping_page(struct address_space *mapping, 384 384 pgoff_t index, void *data) 385 385 { 386 - filler_t *filler = (filler_t *)mapping->a_ops->readpage; 387 - return read_cache_page(mapping, index, filler, data); 386 + return read_cache_page(mapping, index, NULL, data); 388 387 } 389 388 390 389 /*
+6 -4
mm/filemap.c
··· 2825 2825 } 2826 2826 2827 2827 filler: 2828 - err = filler(data, page); 2828 + if (filler) 2829 + err = filler(data, page); 2830 + else 2831 + err = mapping->a_ops->readpage(data, page); 2832 + 2829 2833 if (err < 0) { 2830 2834 put_page(page); 2831 2835 return ERR_PTR(err); ··· 2941 2937 pgoff_t index, 2942 2938 gfp_t gfp) 2943 2939 { 2944 - filler_t *filler = (filler_t *)mapping->a_ops->readpage; 2945 - 2946 - return do_read_cache_page(mapping, index, filler, NULL, gfp); 2940 + return do_read_cache_page(mapping, index, NULL, NULL, gfp); 2947 2941 } 2948 2942 EXPORT_SYMBOL(read_cache_page_gfp); 2949 2943