media: atomisp: hmm_bo: Rewrite free_private_pages() using pages_array helper funcs
authorHans de Goede <hdegoede@redhat.com>
Sat, 13 Aug 2022 16:06:10 +0000 (18:06 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sat, 24 Sep 2022 07:43:44 +0000 (09:43 +0200)
Rewrite free_private_pages() using pages_array helper funcs.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/atomisp/pci/hmm/hmm_bo.c

index 40b1137..d7f42a4 100644 (file)
@@ -623,28 +623,10 @@ static void free_pages_bulk_array(unsigned long nr_pages, struct page **page_arr
                __free_pages(page_array[i], 0);
 }
 
-static void free_private_bo_pages(struct hmm_buffer_object *bo,
-                                 int free_pgnr)
+static void free_private_bo_pages(struct hmm_buffer_object *bo)
 {
-       int i, ret;
-
-       for (i = 0; i < free_pgnr; i++) {
-               ret = set_pages_wb(bo->pages[i], 1);
-               if (ret)
-                       dev_err(atomisp_dev,
-                               "set page to WB err ...ret = %d\n",
-                               ret);
-               /*
-               W/A: set_pages_wb seldom return value = -EFAULT
-               indicate that address of page is not in valid
-               range(0xffff880000000000~0xffffc7ffffffffff)
-               then, _free_pages would panic; Do not know why page
-               address be valid,it maybe memory corruption by lowmemory
-               */
-               if (!ret) {
-                       __free_pages(bo->pages[i], 0);
-               }
-       }
+       set_pages_array_wb(bo->pages, bo->pgnr);
+       free_pages_bulk_array(bo->pgnr, bo->pages);
 }
 
 /*Allocate pages which will be used only by ISP*/
@@ -822,7 +804,7 @@ void hmm_bo_free_pages(struct hmm_buffer_object *bo)
        bo->status &= (~HMM_BO_PAGE_ALLOCED);
 
        if (bo->type == HMM_BO_PRIVATE)
-               free_private_bo_pages(bo, bo->pgnr);
+               free_private_bo_pages(bo);
        else if (bo->type == HMM_BO_USER)
                free_user_pages(bo, bo->pgnr);
        else