]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
Merge tag 'drm-misc-next-fixes-2020-02-07' of git://anongit.freedesktop.org/drm/drm...
authorDave Airlie <airlied@redhat.com>
Fri, 14 Feb 2020 02:57:47 +0000 (12:57 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 14 Feb 2020 02:57:57 +0000 (12:57 +1000)
drm-misc-next fixes for v5.6:
- Fix build error in drm/edid.
- Plug close-after-free race in vgem_gem_create.
- Handle CONFIG_DMA_API_DEBUG_SG better in drm/msm.

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/551b6183-a581-9d12-10a9-24cd929de425@linux.intel.com
drivers/gpu/drm/drm_edid.c
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/vgem/vgem_drv.c

index 99769d6c9f8462e25d189c78df3990b8519b7b79..805fb004c8eb922fca661d9dd1f56ded8115de1c 100644 (file)
@@ -3211,7 +3211,7 @@ static u8 *drm_find_cea_extension(const struct edid *edid)
        return cea;
 }
 
-static const struct drm_display_mode *cea_mode_for_vic(u8 vic)
+static __always_inline const struct drm_display_mode *cea_mode_for_vic(u8 vic)
 {
        BUILD_BUG_ON(1 + ARRAY_SIZE(edid_cea_modes_1) - 1 != 127);
        BUILD_BUG_ON(193 + ARRAY_SIZE(edid_cea_modes_193) - 1 != 219);
index c26219c7a49fd18b29648a929a92453b4c894788..e4b750b0c2d3fcdad40761fe6cae1597b2844164 100644 (file)
@@ -441,6 +441,14 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
        if (ret)
                goto err_msm_uninit;
 
+       if (!dev->dma_parms) {
+               dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms),
+                                             GFP_KERNEL);
+               if (!dev->dma_parms)
+                       return -ENOMEM;
+       }
+       dma_set_max_seg_size(dev, DMA_BIT_MASK(32));
+
        msm_gem_shrinker_init(ddev);
 
        switch (get_mdp_ver(pdev)) {
index 5bd60ded3d8151d2e63b85d7c7afbb626a689665..909eba43664a28f857070ec7090482f53727416d 100644 (file)
@@ -196,9 +196,10 @@ static struct drm_gem_object *vgem_gem_create(struct drm_device *dev,
                return ERR_CAST(obj);
 
        ret = drm_gem_handle_create(file, &obj->base, handle);
-       drm_gem_object_put_unlocked(&obj->base);
-       if (ret)
+       if (ret) {
+               drm_gem_object_put_unlocked(&obj->base);
                return ERR_PTR(ret);
+       }
 
        return &obj->base;
 }
@@ -221,7 +222,9 @@ static int vgem_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
        args->size = gem_object->size;
        args->pitch = pitch;
 
-       DRM_DEBUG("Created object of size %lld\n", size);
+       drm_gem_object_put_unlocked(gem_object);
+
+       DRM_DEBUG("Created object of size %llu\n", args->size);
 
        return 0;
 }