From patchwork Fri Jun 3 16:37:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 9153597 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C81E860865 for ; Fri, 3 Jun 2016 16:38:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B9F6126C9B for ; Fri, 3 Jun 2016 16:38:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AEB1B27BFA; Fri, 3 Jun 2016 16:38:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7BF0E28330 for ; Fri, 3 Jun 2016 16:38:52 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E11FD6EE53; Fri, 3 Jun 2016 16:38:43 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 185206EE3E for ; Fri, 3 Jun 2016 16:38:29 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id n184so622230wmn.1 for ; Fri, 03 Jun 2016 09:38:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=45Lc8gNw2zy/2rPuK2XP8yumXOAESuCiK9QSSdlLYFA=; b=crIGtoSnsFmPxv/SPDB+5yvc/Qb3NFRYJjGBCfamN9qG7GH/JQdq+Xx6xubT9o3ZWJ 6foRkwpCWYzOVcuh2vDMlP6E0U4uTmRhYmT1msPFnVji1w8JIeCeYWpgPslzdnwTs+pa uAM+V9hzu2aI8lnyOV1DgBkAVt6a+N7Os4Z9aof2nZ0YSm2CLEaplPm4vB/ylJ/0fwOS dLL7x6ffPobasZ4TbokjPo27J7riPAnNXlhcU+Lt5KDTsmdExIhfsk19abqS4g5QfHAy vP/YQIv/jSwPQhUNoW+SbA/WQVMzSZu+TTcroLrR6eVsowDJhnU6hbxIfVpePSHnS2CK MD3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=45Lc8gNw2zy/2rPuK2XP8yumXOAESuCiK9QSSdlLYFA=; b=CCE99Tbw9RfJlOTnzNPtEKF6rU0GyYA9yTdi8omTmP27m0gt2nGHa77JG/XEU56g+F /yqG1EZhYLpFj6hNpq5YNfZz9Jk9e+5vTSSrcPRlxs99TP4eZVNRUgo/mGitkrft/WG3 givWy5m6hvGdnDV9U9ug51G4poXXNIeC0PdCqllQFrE/XQ34LPqFnAxP1Hkihq1PEx3C YHIOWUJcbOH6oaBtfWxctxLeQbbAmVQcOF10Uqe1sLqyB4bQY1uxemHjM8QSFfrQfW93 /wgaS+b2l84Fhd6dopdJiWiEzYHwV0uZ04Pn1r1El8iVLRei2OhGY64kRRnbGGZIDZoq 0Nlg== X-Gm-Message-State: ALyK8tJdYbxxkzRKT58sM8sbdAW1FOrYzO6h/RiEzpulCr5gzVeN977WnxEzfB8EJy1vxA== X-Received: by 10.194.143.51 with SMTP id sb19mr4926282wjb.175.1464971907839; Fri, 03 Jun 2016 09:38:27 -0700 (PDT) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id l9sm6565607wjm.0.2016.06.03.09.38.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Jun 2016 09:38:27 -0700 (PDT) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Fri, 3 Jun 2016 17:37:23 +0100 Message-Id: <1464971847-15809-59-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1464971847-15809-1-git-send-email-chris@chris-wilson.co.uk> References: <1464971847-15809-1-git-send-email-chris@chris-wilson.co.uk> Subject: [Intel-gfx] [PATCH 58/62] drm/i915: Kill drop_pages() X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP The drop_pages() function is a dangerous trap in that it can release the passed in object pointer and so unless the caller is aware, it can easily trick us into using the stale object afterwards. Move it into its solitary callsite where we know it is safe. Signed-off-by: Chris Wilson --- drivers/gpu/drm/i915/i915_gem.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index e5189155e729..a39d767d8137 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -278,20 +278,6 @@ i915_gem_object_unbind(struct drm_i915_gem_object *obj) return ret; } -static int -drop_pages(struct drm_i915_gem_object *obj) -{ - int ret; - - i915_gem_object_get(obj); - ret = i915_gem_object_unbind(obj); - if (ret == 0) - ret = i915_gem_object_put_pages(obj); - i915_gem_object_put(obj); - - return ret; -} - int i915_gem_object_attach_phys(struct drm_i915_gem_object *obj, int align) @@ -312,7 +298,11 @@ i915_gem_object_attach_phys(struct drm_i915_gem_object *obj, if (obj->base.filp == NULL) return -EINVAL; - ret = drop_pages(obj); + ret = i915_gem_object_unbind(obj); + if (ret) + return ret; + + ret = i915_gem_object_put_pages(obj); if (ret) return ret;