Commit 3d3aa969 authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-misc-fixes-2018-05-16' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes

- core: Fix regression in dev node offsets (Haneen)
- vc4: Fix memory leak on driver close (Eric)
- dumb-buffers: Prevent overflow in DIV_ROUND_UP() (Dan)

Cc: Haneen Mohammed <hamohammed.sa@gmail.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Dan Carpenter <dan.carpenter@oracle.com>

* tag 'drm-misc-fixes-2018-05-16' of git://anongit.freedesktop.org/drm/drm-misc:
  drm/dumb-buffers: Integer overflow in drm_mode_create_ioctl()
  drm/vc4: Fix leak of the file_priv that stored the perfmon.
  drm: Match sysfs name in link removal to link creation
parents 76ef6b28 2b620729
...@@ -716,7 +716,7 @@ static void remove_compat_control_link(struct drm_device *dev) ...@@ -716,7 +716,7 @@ static void remove_compat_control_link(struct drm_device *dev)
if (!minor) if (!minor)
return; return;
name = kasprintf(GFP_KERNEL, "controlD%d", minor->index); name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
if (!name) if (!name)
return; return;
......
...@@ -65,12 +65,13 @@ int drm_mode_create_dumb_ioctl(struct drm_device *dev, ...@@ -65,12 +65,13 @@ int drm_mode_create_dumb_ioctl(struct drm_device *dev,
return -EINVAL; return -EINVAL;
/* overflow checks for 32bit size calculations */ /* overflow checks for 32bit size calculations */
/* NOTE: DIV_ROUND_UP() can overflow */ if (args->bpp > U32_MAX - 8)
return -EINVAL;
cpp = DIV_ROUND_UP(args->bpp, 8); cpp = DIV_ROUND_UP(args->bpp, 8);
if (!cpp || cpp > 0xffffffffU / args->width) if (cpp > U32_MAX / args->width)
return -EINVAL; return -EINVAL;
stride = cpp * args->width; stride = cpp * args->width;
if (args->height > 0xffffffffU / stride) if (args->height > U32_MAX / stride)
return -EINVAL; return -EINVAL;
/* test for wrap-around */ /* test for wrap-around */
......
...@@ -130,6 +130,7 @@ static void vc4_close(struct drm_device *dev, struct drm_file *file) ...@@ -130,6 +130,7 @@ static void vc4_close(struct drm_device *dev, struct drm_file *file)
struct vc4_file *vc4file = file->driver_priv; struct vc4_file *vc4file = file->driver_priv;
vc4_perfmon_close_file(vc4file); vc4_perfmon_close_file(vc4file);
kfree(vc4file);
} }
static const struct vm_operations_struct vc4_vm_ops = { static const struct vm_operations_struct vc4_vm_ops = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment