OSDN Git Service

relay: use kvcalloc to alloc page array in relay_alloc_page_array
authorwuchi <wuchi.zero@gmail.com>
Fri, 9 Sep 2022 10:10:25 +0000 (18:10 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 3 Oct 2022 21:21:43 +0000 (14:21 -0700)
kvcalloc() is safer because it will check the integer overflows, and using
it will simple the logic of allocation size.

Link: https://lkml.kernel.org/r/20220909101025.82955-1-wuchi.zero@gmail.com
Signed-off-by: wuchi <wuchi.zero@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/relay.c

index 6a611e7..d7edc93 100644 (file)
@@ -60,10 +60,7 @@ static const struct vm_operations_struct relay_file_mmap_ops = {
  */
 static struct page **relay_alloc_page_array(unsigned int n_pages)
 {
-       const size_t pa_size = n_pages * sizeof(struct page *);
-       if (pa_size > PAGE_SIZE)
-               return vzalloc(pa_size);
-       return kzalloc(pa_size, GFP_KERNEL);
+       return kvcalloc(n_pages, sizeof(struct page *), GFP_KERNEL);
 }
 
 /*