Merge tag 'drm-misc-next-2023-07-13' of git://anongit.freedesktop.org/drm/drm-misc...
[platform/kernel/linux-rpi.git] / drivers / dma-buf / udmabuf.c
index 06729cd..c406459 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/shmem_fs.h>
 #include <linux/slab.h>
 #include <linux/udmabuf.h>
-#include <linux/hugetlb.h>
 #include <linux/vmalloc.h>
 #include <linux/iosys-map.h>
 
@@ -205,9 +204,7 @@ static long udmabuf_create(struct miscdevice *device,
        struct udmabuf *ubuf;
        struct dma_buf *buf;
        pgoff_t pgoff, pgcnt, pgidx, pgbuf = 0, pglimit;
-       struct page *page, *hpage = NULL;
-       pgoff_t subpgoff, maxsubpgs;
-       struct hstate *hpstate;
+       struct page *page;
        int seals, ret = -EINVAL;
        u32 i, flags;
 
@@ -243,7 +240,7 @@ static long udmabuf_create(struct miscdevice *device,
                if (!memfd)
                        goto err;
                mapping = memfd->f_mapping;
-               if (!shmem_mapping(mapping) && !is_file_hugepages(memfd))
+               if (!shmem_mapping(mapping))
                        goto err;
                seals = memfd_fcntl(memfd, F_GET_SEALS, 0);
                if (seals == -EINVAL)
@@ -254,48 +251,16 @@ static long udmabuf_create(struct miscdevice *device,
                        goto err;
                pgoff = list[i].offset >> PAGE_SHIFT;
                pgcnt = list[i].size   >> PAGE_SHIFT;
-               if (is_file_hugepages(memfd)) {
-                       hpstate = hstate_file(memfd);
-                       pgoff = list[i].offset >> huge_page_shift(hpstate);
-                       subpgoff = (list[i].offset &
-                                   ~huge_page_mask(hpstate)) >> PAGE_SHIFT;
-                       maxsubpgs = huge_page_size(hpstate) >> PAGE_SHIFT;
-               }
                for (pgidx = 0; pgidx < pgcnt; pgidx++) {
-                       if (is_file_hugepages(memfd)) {
-                               if (!hpage) {
-                                       hpage = find_get_page_flags(mapping, pgoff,
-                                                                   FGP_ACCESSED);
-                                       if (!hpage) {
-                                               ret = -EINVAL;
-                                               goto err;
-                                       }
-                               }
-                               page = hpage + subpgoff;
-                               get_page(page);
-                               subpgoff++;
-                               if (subpgoff == maxsubpgs) {
-                                       put_page(hpage);
-                                       hpage = NULL;
-                                       subpgoff = 0;
-                                       pgoff++;
-                               }
-                       } else {
-                               page = shmem_read_mapping_page(mapping,
-                                                              pgoff + pgidx);
-                               if (IS_ERR(page)) {
-                                       ret = PTR_ERR(page);
-                                       goto err;
-                               }
+                       page = shmem_read_mapping_page(mapping, pgoff + pgidx);
+                       if (IS_ERR(page)) {
+                               ret = PTR_ERR(page);
+                               goto err;
                        }
                        ubuf->pages[pgbuf++] = page;
                }
                fput(memfd);
                memfd = NULL;
-               if (hpage) {
-                       put_page(hpage);
-                       hpage = NULL;
-               }
        }
 
        exp_info.ops  = &udmabuf_ops;