diff options
author | Dave Airlie <airlied@redhat.com> | 2011-02-23 17:35:06 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-02-28 00:24:35 -0500 |
commit | 1922756124ddd53846877416d92ba4a802bc658f (patch) | |
tree | 22b5b5e5457d5eab364cd2c860814b29874e56f7 | |
parent | 3c0556e9673f79e386b27768e27d18b3ce29e40e (diff) |
drm: fix unsigned vs signed comparison issue in modeset ctl ioctl.
This fixes CVE-2011-1013.
Reported-by: Matthiew Herrb (OpenBSD X.org team)
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | drivers/gpu/drm/drm_irq.c | 3 | ||||
-rw-r--r-- | include/drm/drmP.h | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 53120a72a48..28d1d3c24d6 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c | |||
@@ -1012,7 +1012,8 @@ int drm_modeset_ctl(struct drm_device *dev, void *data, | |||
1012 | struct drm_file *file_priv) | 1012 | struct drm_file *file_priv) |
1013 | { | 1013 | { |
1014 | struct drm_modeset_ctl *modeset = data; | 1014 | struct drm_modeset_ctl *modeset = data; |
1015 | int crtc, ret = 0; | 1015 | int ret = 0; |
1016 | unsigned int crtc; | ||
1016 | 1017 | ||
1017 | /* If drm_vblank_init() hasn't been called yet, just no-op */ | 1018 | /* If drm_vblank_init() hasn't been called yet, just no-op */ |
1018 | if (!dev->num_crtcs) | 1019 | if (!dev->num_crtcs) |
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index fe29aadb129..348843b8015 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -1101,7 +1101,7 @@ struct drm_device { | |||
1101 | struct platform_device *platformdev; /**< Platform device struture */ | 1101 | struct platform_device *platformdev; /**< Platform device struture */ |
1102 | 1102 | ||
1103 | struct drm_sg_mem *sg; /**< Scatter gather memory */ | 1103 | struct drm_sg_mem *sg; /**< Scatter gather memory */ |
1104 | int num_crtcs; /**< Number of CRTCs on this device */ | 1104 | unsigned int num_crtcs; /**< Number of CRTCs on this device */ |
1105 | void *dev_private; /**< device private data */ | 1105 | void *dev_private; /**< device private data */ |
1106 | void *mm_private; | 1106 | void *mm_private; |
1107 | struct address_space *dev_mapping; | 1107 | struct address_space *dev_mapping; |