OSDN Git Service

drm/shmem-helper: Fix obj->filp derefence
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 15 Jun 2020 15:10:26 +0000 (17:10 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 16 Jun 2020 17:07:31 +0000 (19:07 +0200)
I broke that in my refactoring:

commit 7d2cd72a9aa3df3604cafd169a2d4a525afb68ca
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Fri May 29 16:05:42 2020 +0200

    drm/shmem-helpers: Simplify dma-buf importing

Tested-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reported-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 7d2cd72a9aa3 ("drm/shmem-helpers: Simplify dma-buf importing")
Cc: Boris Brezillon <boris.brezillon@collabora.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Noralf Trønnes <noralf@tronnes.org>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200615151026.2339113-1-daniel.vetter@ffwll.ch
drivers/gpu/drm/drm_gem_shmem_helper.c

index 0a7e3b6..3e7ee40 100644 (file)
@@ -70,15 +70,17 @@ __drm_gem_shmem_create(struct drm_device *dev, size_t size, bool private)
        mutex_init(&shmem->vmap_lock);
        INIT_LIST_HEAD(&shmem->madv_list);
 
-       /*
-        * Our buffers are kept pinned, so allocating them
-        * from the MOVABLE zone is a really bad idea, and
-        * conflicts with CMA. See comments above new_inode()
-        * why this is required _and_ expected if you're
-        * going to pin these pages.
-        */
-       mapping_set_gfp_mask(obj->filp->f_mapping, GFP_HIGHUSER |
-                            __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
+       if (!private) {
+               /*
+                * Our buffers are kept pinned, so allocating them
+                * from the MOVABLE zone is a really bad idea, and
+                * conflicts with CMA. See comments above new_inode()
+                * why this is required _and_ expected if you're
+                * going to pin these pages.
+                */
+               mapping_set_gfp_mask(obj->filp->f_mapping, GFP_HIGHUSER |
+                                    __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
+       }
 
        return shmem;