Stanse found a potential null dereference in i915_suspend. There is a check for dev and dev_priv being NULL, but dev is dereferenced earlier. Move the dereference after the check.
Signed-off-by: Jiri Slaby <[email protected]> --- drivers/gpu/drm/i915/i915_drv.c | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 2ffffd7..6fc4473 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -173,12 +173,17 @@ MODULE_DEVICE_TABLE(pci, pciidlist); static int i915_suspend(struct drm_device *dev, pm_message_t state) { - struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_private *dev_priv; - if (!dev || !dev_priv) { - DRM_ERROR("dev: %p, dev_priv: %p\n", dev, dev_priv); - DRM_ERROR("DRM not initialized, aborting suspend.\n"); - return -ENODEV; + if (!dev) { + DRM_ERROR("dev: %p\n", dev); + goto abort; + } + + dev_priv = dev->dev_private; + if (!dev_priv) { + DRM_ERROR("dev_priv: %p\n", dev_priv); + goto abort; } if (state.event == PM_EVENT_PRETHAW) @@ -208,6 +213,9 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state) dev_priv->modeset_on_lid = 0; return 0; +abort: + DRM_ERROR("DRM not initialized, aborting suspend.\n"); + return -ENODEV; } static int i915_resume(struct drm_device *dev) -- 1.6.5.7 ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev -- _______________________________________________ Dri-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/dri-devel
