diff --git a/mm/swapfile.c b/mm/swapfile.c index bd3829540676..71063e20beb7 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1988,6 +1988,8 @@ static unsigned long read_swap_header(struct swap_info_struct *p, swab32s(&swap_header->info.version); swab32s(&swap_header->info.last_page); swab32s(&swap_header->info.nr_badpages); + if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES) + return 0; for (i = 0; i < swap_header->info.nr_badpages; i++) swab32s(&swap_header->info.badpages[i]); }