From patchwork Thu Jul 2 07:29:50 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 6708071 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 96B6FC05AC for ; Thu, 2 Jul 2015 07:27:11 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id BB3D9206D4 for ; Thu, 2 Jul 2015 07:27:10 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id C960B20460 for ; Thu, 2 Jul 2015 07:27:09 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B291D7214B; Thu, 2 Jul 2015 00:27:08 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by gabe.freedesktop.org (Postfix) with ESMTPS id 69FC66EC53 for ; Thu, 2 Jul 2015 00:27:07 -0700 (PDT) Received: by wgqq4 with SMTP id q4so55174928wgq.1 for ; Thu, 02 Jul 2015 00:27:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=6HzbDO6CDeIBKYh0lTo5qrW5/mi3B07pPxUFsJ8i3kY=; b=E9UHysirW/ZIEuw7Ja+sg6aK+U35lZqth8GKkc2KroK1F0R6h03nq3b43p3u4ILsDg Hb46v9ive8qplCg0yW6rfQk+5xnghY/hjRKmQkCK4vkR8+4NQM6+nEA4EueNSdQP9M7P vIMFgsG+PqRR9e0OwDwbIyCsgzVkN4lO/nbJU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=6HzbDO6CDeIBKYh0lTo5qrW5/mi3B07pPxUFsJ8i3kY=; b=K/ssFyLlDhkdHUrNPtLVjrP3X1bBG32VsNLWtJiTRJPpSK6omTnPULk88VJd2O7VOY lwn5jBe5KCi/rU+37eSR/77jYI3nmGelmKTZbgH4xeHAIYbWUoY2TgesSJKCmWqhl4qF UtMUzjrxRti8FPMqC/QRV6MWp8GbgWJ138ARgjrJJekZzbPLll0HVDoH0pXZVgHi2bK2 uRxwYpY6hNlGLf9be9cUv1Ga0YiV6QCGhTzw9JGK8OMhynasXy0de+tttg+8U6DEqfNs CGW5EvtBm71W+FSYMrNFk/FfE+5MY56qAKiAnXtPkm8ncWmNr7yql2HMpjt22XTNeFAM PnWg== X-Gm-Message-State: ALoCoQkMS1elkMs9OZdnUPVWFDQaDJB9rJcDyhtY62+WzljcGShhpH6lxPu4T9PEvZ1If3czjjMG X-Received: by 10.194.78.175 with SMTP id c15mr54508109wjx.136.1435822026077; Thu, 02 Jul 2015 00:27:06 -0700 (PDT) Received: from phenom.ffwll.local (212-51-149-109.fiber7.init7.net. [212.51.149.109]) by mx.google.com with ESMTPSA id ju2sm7031510wid.12.2015.07.02.00.27.04 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 Jul 2015 00:27:04 -0700 (PDT) From: Daniel Vetter To: DRI Development Subject: [PATCH] drm/crtc-helper: Fixup error handling in drm_helper_crtc_mode_set Date: Thu, 2 Jul 2015 09:29:50 +0200 Message-Id: <1435822190-14920-1-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1435821829-11107-1-git-send-email-daniel.vetter@ffwll.ch> References: <1435821829-11107-1-git-send-email-daniel.vetter@ffwll.ch> Cc: Daniel Stone , Daniel Vetter , Intel Graphics Development , Daniel Vetter , John Hunter X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In commit 9f658b7b62e7aefc1ee067136126eca3f58cabfd Author: Daniel Stone Date: Fri May 22 13:34:45 2015 +0100 drm/crtc_helper: Replace open-coded CRTC state helpers error handling code was broken, resulting in the first path not being checked correctly. Fix this by using the same pattern as in the transitional plane helper function drm_plane_helper_update. v2: Simplify the cleanup code while at it too. Cc: Daniel Stone CC: Sean Paul Cc: John Hunter Signed-off-by: Daniel Vetter --- drivers/gpu/drm/drm_crtc_helper.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c index 393114df88a3..f36750077c12 100644 --- a/drivers/gpu/drm/drm_crtc_helper.c +++ b/drivers/gpu/drm/drm_crtc_helper.c @@ -927,15 +927,13 @@ int drm_helper_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mod if (crtc->funcs->atomic_duplicate_state) crtc_state = crtc->funcs->atomic_duplicate_state(crtc); - else { + else if (crtc->state) + crtc_state = drm_atomic_helper_crtc_duplicate_state(crtc); + else crtc_state = kzalloc(sizeof(*crtc_state), GFP_KERNEL); - if (!crtc_state) - return -ENOMEM; - if (crtc->state) - __drm_atomic_helper_crtc_duplicate_state(crtc, crtc_state); - else - crtc_state->crtc = crtc; - } + + if (!crtc_state) + return -ENOMEM; crtc_state->planes_changed = true; crtc_state->mode_changed = true; @@ -959,10 +957,8 @@ int drm_helper_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mod out: if (crtc->funcs->atomic_destroy_state) crtc->funcs->atomic_destroy_state(crtc, crtc_state); - else { - __drm_atomic_helper_crtc_destroy_state(crtc, crtc_state); - kfree(crtc_state); - } + else + drm_atomic_helper_crtc_destroy_state(crtc, crtc_state); return ret; }