Merge tag 'drm-misc-fixes-2019-11-25' of git://anongit.freedesktop.org/drm/drm-misc...
authorDave Airlie <airlied@redhat.com>
Mon, 9 Dec 2019 07:13:13 +0000 (17:13 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 9 Dec 2019 07:13:19 +0000 (17:13 +1000)
 - A fix for a memory leak in the dma-buf support
 - One in mcde DSI support that leads to a pointer dereference

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20191125094336.GA14723@gilmour.lan
1  2 
drivers/dma-buf/sync_file.c
drivers/gpu/drm/mcde/mcde_dsi.c

index 76fb072c22dc403ef5bb34c37472bd3fc1533415,91185db9a952f872a1ad4d5b7aead1af21299d97..5a5a1da01a00f3fbc8ca6e2e51a8dea69003342a
@@@ -221,7 -221,7 +221,7 @@@ static struct sync_file *sync_file_merg
        a_fences = get_fences(a, &a_num_fences);
        b_fences = get_fences(b, &b_num_fences);
        if (a_num_fences > INT_MAX - b_num_fences)
-               return NULL;
+               goto err;
  
        num_fences = a_num_fences + b_num_fences;
  
@@@ -480,5 -480,5 +480,5 @@@ static const struct file_operations syn
        .release = sync_file_release,
        .poll = sync_file_poll,
        .unlocked_ioctl = sync_file_ioctl,
 -      .compat_ioctl = sync_file_ioctl,
 +      .compat_ioctl = compat_ptr_ioctl,
  };
index d6214d3c8b337b5b6ab4c1f19fb17fbca003f41c,35bb825d1918851f16dcc52e622fdc0bcb1614f4..ef4c630afe3fca0b3e8158f044103dc762782104
@@@ -935,19 -935,21 +935,21 @@@ static int mcde_dsi_bind(struct device 
        for_each_available_child_of_node(dev->of_node, child) {
                panel = of_drm_find_panel(child);
                if (IS_ERR(panel)) {
-                       dev_err(dev, "failed to find panel try bridge (%lu)\n",
+                       dev_err(dev, "failed to find panel try bridge (%ld)\n",
                                PTR_ERR(panel));
+                       panel = NULL;
                        bridge = of_drm_find_bridge(child);
                        if (IS_ERR(bridge)) {
-                               dev_err(dev, "failed to find bridge (%lu)\n",
+                               dev_err(dev, "failed to find bridge (%ld)\n",
                                        PTR_ERR(bridge));
                                return PTR_ERR(bridge);
                        }
                }
        }
        if (panel) {
 -              bridge = drm_panel_bridge_add(panel,
 -                                            DRM_MODE_CONNECTOR_DSI);
 +              bridge = drm_panel_bridge_add_typed(panel,
 +                                                  DRM_MODE_CONNECTOR_DSI);
                if (IS_ERR(bridge)) {
                        dev_err(dev, "error adding panel bridge\n");
                        return PTR_ERR(bridge);