From: Dan Carpenter Date: Thu, 29 Oct 2015 13:37:54 +0000 (+0300) Subject: drm: crtc: integer overflow in drm_property_create_blob() X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=9ac0934bbe52290e4e4c2a58ec41cab9b6ca8c96;p=linux-beck.git drm: crtc: integer overflow in drm_property_create_blob() The size here comes from the user via the ioctl, it is a number between 1-u32max so the addition here could overflow on 32 bit systems. Fixes: f453ba046074 ('DRM: add mode setting support') Signed-off-by: Dan Carpenter Reviewed-by: Daniel Stone Cc: stable@kernel.org # v4.2 Signed-off-by: Dave Airlie --- diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 33d877c65ced..c205f13f9388 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -4105,7 +4105,7 @@ drm_property_create_blob(struct drm_device *dev, size_t length, struct drm_property_blob *blob; int ret; - if (!length) + if (!length || length > ULONG_MAX - sizeof(struct drm_property_blob)) return ERR_PTR(-EINVAL); blob = kzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL);