From: Daniel Golle Date: Fri, 27 Aug 2021 20:30:32 +0000 (+0100) Subject: kernel: properly handle paging errors in fit partition parser X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=cf40141b515d518ff166afb85e898904ab2ae57a;p=openwrt%2Fstaging%2Fwigyori.git kernel: properly handle paging errors in fit partition parser The uImage.FIT partition uses page mapping without properly handling paging errors. This can lead to Kernel Oops in case of read errors while trying to parse uImage.FIT partitions. Signed-off-by: Daniel Golle --- diff --git a/target/linux/generic/files/block/partitions/fit.c b/target/linux/generic/files/block/partitions/fit.c index 27e44a4af4..a0aa0eadf5 100644 --- a/target/linux/generic/files/block/partitions/fit.c +++ b/target/linux/generic/files/block/partitions/fit.c @@ -92,8 +92,11 @@ int parse_fit_partitions(struct parsed_partitions *state, u64 fit_start_sector, return -ERANGE; page = read_mapping_page(mapping, fit_start_sector >> (PAGE_SHIFT - SECTOR_SHIFT), NULL); - if (!page) - return -ENOMEM; + if (IS_ERR(page)) + return -EFAULT; + + if (PageError(page)) + return -EFAULT; init_fit = page_address(page);