From patchwork Wed Jun 15 22:24:39 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wolfram Sang X-Patchwork-Id: 883752 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p5FMUvle025748 for ; Wed, 15 Jun 2011 22:31:17 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2E8359E75F for ; Wed, 15 Jun 2011 15:30:56 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTP id 092979E75F for ; Wed, 15 Jun 2011 15:24:05 -0700 (PDT) Received: from gallifrey.ext.pengutronix.de ([2001:6f8:1178:4:5054:ff:fe8d:eefb] helo=localhost) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1QWyVH-000354-Um; Thu, 16 Jun 2011 00:24:04 +0200 From: Wolfram Sang To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/i915: add check for valid init_clock_gating-pointer Date: Thu, 16 Jun 2011 00:24:39 +0200 Message-Id: <1308176679-13766-1-git-send-email-w.sang@pengutronix.de> X-Mailer: git-send-email 1.7.2.5 X-SA-Exim-Connect-IP: 2001:6f8:1178:4:5054:ff:fe8d:eefb X-SA-Exim-Mail-From: w.sang@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: dri-devel@lists.freedesktop.org X-Mailman-Approved-At: Wed, 15 Jun 2011 15:30:22 -0700 Cc: Wolfram Sang X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Wed, 15 Jun 2011 22:31:17 +0000 (UTC) Commit 6067aa (drm/i915: split clock gating init into per-chipset functions) unconditionally calls the newly created init_clock_gating-pointer. There is one case, however, where it does not get set: if (HAS_PCH_SPLIT(dev)) { ... } else dev_priv->display.update_wm = NULL; } This can lead to a NULL-pointer exception as in https://bugzilla.kernel.org/show_bug.cgi?id=37252 Fix it by checking if the pointer is valid before using it. Signed-off-by: Wolfram Sang Cc: Jesse Barnes Cc: Keith Packard --- Compile tested only, due to no hardware. I was going through the list of regressions and had my take on this one. Exploring new subsystems here, so hopefully it's the right direction. The other solution would be initializing the pointer to a default value, but that one I don't know. drivers/gpu/drm/i915/intel_display.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 81a9059..cf75856 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -7511,7 +7511,8 @@ void intel_init_clock_gating(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; - dev_priv->display.init_clock_gating(dev); + if (dev_priv->display.init_clock_gating) + dev_priv->display.init_clock_gating(dev); if (dev_priv->display.init_pch_clock_gating) dev_priv->display.init_pch_clock_gating(dev);