Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp11291299ybi; Thu, 25 Jul 2019 13:32:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqyAsuvGU91hvCiAHHAQNA+bj3CDO6qgEPszBA/ifn4h0d9H3eUjIJen92CVcjenXOQWzPxH X-Received: by 2002:a63:c751:: with SMTP id v17mr72717774pgg.264.1564086723358; Thu, 25 Jul 2019 13:32:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564086723; cv=none; d=google.com; s=arc-20160816; b=YZoc1MbIwLxMNpn6YXQdaiNTrRrTSCCj/pYzTPHvygNHCwdSS/8PiynlwSFFMWIR2l tHc8QjZP1kGf48WnwJOobwYLArclPVmvy9ie+NUkbz3mKvGprB6Ac7RoRqunrBp5S4/j ZpPUTlzber4IYadbE1m9xjQHOqlbsQsjSOzCELXRaL4JU55ibtd2ECnbV6zgHhZsaD7+ qPLxBK6X7fC/NHgRq+41b+0NmzKubx+8NHO3HW13wEXqmFZHf+CiCxS1eJNoNn1rp6i1 KPdCFZ+0l1ndpyOqjv2IYchcHdmdV06SmoqOSVZnGYTZE/UTiWj6GBP65J+XfmyqomsS 0pfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=lFAaTCShA48r4K0JjIf5asKdc5JPE4E20IT4t2/z6FQ=; b=ejdQcEhooPYMY3AQIfCGIHy5REiNzzlcwj4F/D57mJJ+INGbVDCLuTZYDPaR71Q/gM PYyV+/pYOJrtb+1Hd8hnVMVntgybGD1z6VemuRpShKwbTk7tMJmXcw0rnM33NYyZosbM 4Na4Fbn3HNruDd45UkOE1d3o56NWU8OHGEFRsHL6V7rBthRUqquJ7Tojd9j0CwDC/TYn h+X4lccVtVsMZ6PBg3BOC90NX2zep856KO2c3qG2ROUBaiOqO8chXAfzqOojug0kyHkZ hqoA3vqD2kD7PPnMz8qbb/n2UbHoheS8W5MbQ60jcItsUIfXLCJvqLP66v3M4IVtBKU1 604Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h16si17588361plr.94.2019.07.25.13.31.48; Thu, 25 Jul 2019 13:32:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726680AbfGYUaq (ORCPT + 99 others); Thu, 25 Jul 2019 16:30:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59348 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725819AbfGYUaq (ORCPT ); Thu, 25 Jul 2019 16:30:46 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2F47985539; Thu, 25 Jul 2019 20:30:46 +0000 (UTC) Received: from treble.redhat.com (ovpn-122-90.rdu2.redhat.com [10.10.122.90]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0FB6F5D772; Thu, 25 Jul 2019 20:30:44 +0000 (UTC) From: Josh Poimboeuf To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, Chris Wilson , Peter Zijlstra , Thomas Gleixner , Linus Torvalds , Sedat Dilek , Nick Desaulniers , Nathan Chancellor , Arnd Bergmann Subject: [PATCH] drm/i915: Remove redundant user_access_end() from __copy_from_user() error path Date: Thu, 25 Jul 2019 15:29:57 -0500 Message-Id: <51a4155c5bc2ca847a9cbe85c1c11918bb193141.1564086017.git.jpoimboe@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 25 Jul 2019 20:30:46 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Objtool reports: drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: .altinstr_replacement+0x36: redundant UACCESS disable __copy_from_user() already does both STAC and CLAC, so the user_access_end() in its error path adds an extra unnecessary CLAC. Fixes: 0b2c8f8b6b0c ("i915: fix missing user_access_end() in page fault exception case") Reported-by: Thomas Gleixner Reported-by: Sedat Dilek Acked-by: Peter Zijlstra (Intel) Tested-by: Nick Desaulniers Tested-by: Sedat Dilek Link: https://github.com/ClangBuiltLinux/linux/issues/617 Signed-off-by: Josh Poimboeuf --- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index 5fae0e50aad0..41dab9ea33cd 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1628,6 +1628,7 @@ static int check_relocations(const struct drm_i915_gem_exec_object2 *entry) static int eb_copy_relocations(const struct i915_execbuffer *eb) { + struct drm_i915_gem_relocation_entry *relocs; const unsigned int count = eb->buffer_count; unsigned int i; int err; @@ -1635,7 +1636,6 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb) for (i = 0; i < count; i++) { const unsigned int nreloc = eb->exec[i].relocation_count; struct drm_i915_gem_relocation_entry __user *urelocs; - struct drm_i915_gem_relocation_entry *relocs; unsigned long size; unsigned long copied; @@ -1663,14 +1663,8 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb) if (__copy_from_user((char *)relocs + copied, (char __user *)urelocs + copied, - len)) { -end_user: - user_access_end(); -end: - kvfree(relocs); - err = -EFAULT; - goto err; - } + len)) + goto end; copied += len; } while (copied < size); @@ -1699,10 +1693,14 @@ static int eb_copy_relocations(const struct i915_execbuffer *eb) return 0; +end_user: + user_access_end(); +end: + kvfree(relocs); + err = -EFAULT; err: while (i--) { - struct drm_i915_gem_relocation_entry *relocs = - u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr); + relocs = u64_to_ptr(typeof(*relocs), eb->exec[i].relocs_ptr); if (eb->exec[i].relocation_count) kvfree(relocs); } -- 2.20.1