From patchwork Wed Mar 10 22:45:08 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 84713 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o2AMkHC2006498 for ; Wed, 10 Mar 2010 22:46:54 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 083349F60E; Wed, 10 Mar 2010 14:46:21 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from orsmga101.jf.intel.com (mga06.intel.com [134.134.136.21]) by gabe.freedesktop.org (Postfix) with ESMTP id B36049F5D3 for ; Wed, 10 Mar 2010 14:45:56 -0800 (PST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 10 Mar 2010 14:42:34 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.49,616,1262592000"; d="scan'208";a="499618504" Received: from unknown (HELO localhost.localdomain) ([10.255.13.214]) by orsmga002.jf.intel.com with ESMTP; 10 Mar 2010 14:45:11 -0800 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Wed, 10 Mar 2010 22:45:08 +0000 Message-Id: <1268261124-13653-22-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 1.7.0 In-Reply-To: <1268261124-13653-1-git-send-email-chris@chris-wilson.co.uk> References: <1268261124-13653-1-git-send-email-chris@chris-wilson.co.uk> Cc: Dave Airlie Subject: [Intel-gfx] [PATCH 21/37] drm: Propagate failure from drm_setup_crtcs() X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Wed, 10 Mar 2010 22:46:54 +0000 (UTC) diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index b3f369f..6b2cd91 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c @@ -494,7 +494,7 @@ out: return best_score; } -static void drm_setup_crtcs(struct drm_device *dev) +static int drm_setup_crtcs(struct drm_device *dev) { struct drm_crtc **crtcs; struct drm_display_mode **modes; @@ -520,6 +520,12 @@ static void drm_setup_crtcs(struct drm_device *dev) sizeof(struct drm_display_mode *), GFP_KERNEL); enabled = kcalloc(dev->mode_config.num_connector, sizeof(bool), GFP_KERNEL); + if (crtcs == NULL || modes == NULL || enabled == NULL) { + kfree(crtcs); + kfree(modes); + kfree(enabled); + return -ENOMEM; + } drm_enable_connectors(dev, enabled); @@ -556,6 +562,8 @@ static void drm_setup_crtcs(struct drm_device *dev) kfree(crtcs); kfree(modes); kfree(enabled); + + return 0; } /** @@ -1018,6 +1026,7 @@ bool drm_helper_plugged_event(struct drm_device *dev) bool drm_helper_initial_config(struct drm_device *dev) { int count = 0; + int ret; /* disable all the possible outputs/crtcs before entering KMS mode */ drm_helper_disable_unused_functions(dev); @@ -1034,7 +1043,9 @@ bool drm_helper_initial_config(struct drm_device *dev) if (count == 0) printk(KERN_INFO "No connectors reported connected with modes\n"); - drm_setup_crtcs(dev); + ret = drm_setup_crtcs(dev); + if (ret) + return ret; /* alert the driver fb layer */ dev->mode_config.funcs->fb_changed(dev);