kfree() on a NULL input is a no-op. Hence remove the check.
Signed-off-by: Sachin Kamat sachin.kamat@linaro.org --- This series is build tested on the latest linux-next (20121115). --- drivers/gpu/drm/drm_crtc.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 3533609..807336a 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -470,10 +470,8 @@ void drm_crtc_cleanup(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev;
- if (crtc->gamma_store) { - kfree(crtc->gamma_store); - crtc->gamma_store = NULL; - } + kfree(crtc->gamma_store); + crtc->gamma_store = NULL;
drm_mode_object_put(dev, &crtc->base); list_del(&crtc->head);
drm_property_create_blob() could return NULL in which case NULL pointer dereference error (on connector->edid_blob_ptr) is possible. Return if connector->edid_blob_ptr is NULL.
Fixes the following smatch error: drivers/gpu/drm/drm_crtc.c:3186 drm_mode_connector_update_edid_property() error: potential null dereference 'connector->edid_blob_ptr'. (drm_property_create_blob returns null)
Signed-off-by: Sachin Kamat sachin.kamat@linaro.org --- drivers/gpu/drm/drm_crtc.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 807336a..9337ce3 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -3186,6 +3186,8 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector, size = EDID_LENGTH * (1 + edid->extensions); connector->edid_blob_ptr = drm_property_create_blob(connector->dev, size, edid); + if (!connector->edid_blob_ptr) + return -EINVAL;
ret = drm_connector_property_set_value(connector, dev->mode_config.edid_property,
kcalloc returns NULL on failure. Hence check for the return value and exit on error to avoid NULL pointer dereference.
Fixes the following smatch errors: drivers/gpu/drm/drm_fb_helper.c:1271 drm_setup_crtcs() error: potential null dereference 'modes'. (kcalloc returns null) drivers/gpu/drm/drm_fb_helper.c:1272 drm_setup_crtcs() error: potential null dereference 'crtcs'. (kcalloc returns null)
Signed-off-by: Sachin Kamat sachin.kamat@linaro.org --- Dependent on the following patch series: http://comments.gmane.org/gmane.comp.video.dri.devel/76605 --- drivers/gpu/drm/drm_fb_helper.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 8c2de02..fc67cc5 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1251,6 +1251,11 @@ static void drm_setup_crtcs(struct drm_fb_helper *fb_helper) sizeof(struct drm_display_mode *), GFP_KERNEL); enabled = kcalloc(dev->mode_config.num_connector, sizeof(bool), GFP_KERNEL); + if (!crtcs || !modes || !enabled) { + DRM_ERROR("Memory allocation failed\n"); + goto out; + } +
drm_enable_connectors(fb_helper, enabled);
@@ -1289,6 +1294,7 @@ static void drm_setup_crtcs(struct drm_fb_helper *fb_helper) } }
+out: kfree(crtcs); kfree(modes); kfree(enabled);
kfree on a null argument is a no-op. Silences the following smatch warning: drivers/gpu/drm/drm_stub.c:496 drm_put_dev() info: redundant null check on dev->devname calling kfree()
Signed-off-by: Sachin Kamat sachin.kamat@linaro.org --- drivers/gpu/drm/drm_stub.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c index c236fd2..2d4beff 100644 --- a/drivers/gpu/drm/drm_stub.c +++ b/drivers/gpu/drm/drm_stub.c @@ -492,10 +492,7 @@ void drm_put_dev(struct drm_device *dev) drm_put_minor(&dev->primary);
list_del(&dev->driver_item); - if (dev->devname) { - kfree(dev->devname); - dev->devname = NULL; - } + kfree(dev->devname); kfree(dev); } EXPORT_SYMBOL(drm_put_dev);
Hi Dave,
Please ignore this patch.
On 19 November 2012 15:14, Sachin Kamat sachin.kamat@linaro.org wrote:
kfree() on a NULL input is a no-op. Hence remove the check.
Signed-off-by: Sachin Kamat sachin.kamat@linaro.org
This series is build tested on the latest linux-next (20121115).
drivers/gpu/drm/drm_crtc.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 3533609..807336a 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -470,10 +470,8 @@ void drm_crtc_cleanup(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev;
if (crtc->gamma_store) {
kfree(crtc->gamma_store);
crtc->gamma_store = NULL;
}
kfree(crtc->gamma_store);
crtc->gamma_store = NULL; drm_mode_object_put(dev, &crtc->base); list_del(&crtc->head);
-- 1.7.4.1
On 21 November 2012 20:42, Sachin Kamat sachin.kamat@linaro.org wrote:
Hi Dave,
Please ignore this patch.
Please ignore this mail. Sorry for the noise.
dri-devel@lists.freedesktop.org