Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp2976146pxb; Mon, 16 Nov 2020 02:20:40 -0800 (PST) X-Google-Smtp-Source: ABdhPJyxM2Qxd5desOa4APHgSrxi14MhcRQd6i5RwFQdzrti9P7cAvrXHAfnnZZAydZRQ0K27vjx X-Received: by 2002:a17:906:134e:: with SMTP id x14mr14293174ejb.173.1605522040048; Mon, 16 Nov 2020 02:20:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605522040; cv=none; d=google.com; s=arc-20160816; b=HmxGmsQQY7kSm3GmkYw0ZtfeCWXP23VfXQ0b9hkBK8A0Zi7Gk1zpGkioiSK9SI0JfL jDkVWjOGFgMbsEnXsWip+KGwSEfTWsrnACY4I75LOkWACLyQZ7ME5mdyjP8oaSpuHaWA /TA1hpm9ghLynjpiYBvIaMpTui8XgDMXdGZUQOFjOsmTVJ0tOgL/bcmqH8d5Ws7tP7QV hhZvgr5MRTG2jmsMsNWTDQtiXOyBKXzvD1O4b6lB5Sh+kln/xAgrYObDLos8eccfANCL uNlVBP+Pzx1bsu0ImisZohOYKCP8lOCgxKvYV0G72Ay87i6R1DlCsHCDIrtl3vszuBtO A7ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:message-id:date:to:cc:from:subject :references:in-reply-to:content-transfer-encoding:mime-version; bh=x4xzZRHdg2Tr8mH7Jg3Kay/mCiCEsv78GQozU7RJWSA=; b=AnbPntu/nbjNRJTBdgM/M/gCR2eDl54vWSoJz0KHb9GEuFKEn+w06gSLZYGbjwiULJ xdqQHDK341gwpnbJgP1aJ0jNJ8ZjEnmfGigqNmhYAz8a/u0Z7rCzfF9G71AJxZhnFoMp sx6JT9ulaGNO+BSl2z270iz2XyEL47a7yw4QbYj6kTtEp0cWEcZT1EYqut5i7hgFQ5g8 6iquu+nUDtQkst/I0S3eL7FykZ5Dy9OpSc+2IzkTn2+GugwUfNbgmBWcurczeYk/OUlz IE0WbaSqIYy+sMxepR7qXi8kyFnZOzYAkBNB0F3+9WJ70TbQc/55504eUV/V0xIy2HNp EJww== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gu3si8861708ejb.641.2020.11.16.02.20.17; Mon, 16 Nov 2020 02:20:40 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728574AbgKPKPZ convert rfc822-to-8bit (ORCPT + 99 others); Mon, 16 Nov 2020 05:15:25 -0500 Received: from mail.fireflyinternet.com ([77.68.26.236]:60125 "EHLO fireflyinternet.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727012AbgKPKPZ (ORCPT ); Mon, 16 Nov 2020 05:15:25 -0500 X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from localhost (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP (TLS) id 23003528-1500050 for multiple; Mon, 16 Nov 2020 10:15:03 +0000 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT In-Reply-To: <20201116100837.GA29398@kadam> References: <20201116100837.GA29398@kadam> Subject: Re: drivers/gpu/drm/i915/gem/i915_gem_throttle.c:59 i915_gem_throttle_ioctl() error: double locked 'ctx->engines_mutex' (orig line 59) From: Chris Wilson Cc: lkp@intel.com, kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, Joonas Lahtinen , Tvrtko Ursulin , Rodrigo Vivi To: Dan Carpenter , kbuild@lists.01.org Date: Mon, 16 Nov 2020 10:15:04 +0000 Message-ID: <160552170467.29277.2663645719015888596@build.alporthouse.com> User-Agent: alot/0.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Dan Carpenter (2020-11-16 10:08:38) > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > head: 0062442ecfef0d82cd69e3e600d5006357f8d8e4 > commit: 27a5dcfe73f4b696b3de8c23a560199bb1c193a4 drm/i915/gem: Remove disordered per-file request list for throttling > config: i386-randconfig-m021-20201115 (attached as .config) > compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot > Reported-by: Dan Carpenter > > smatch warnings: > drivers/gpu/drm/i915/gem/i915_gem_throttle.c:59 i915_gem_throttle_ioctl() error: double locked 'ctx->engines_mutex' (orig line 59) > > vim +59 drivers/gpu/drm/i915/gem/i915_gem_throttle.c > > 35 int > 36 i915_gem_throttle_ioctl(struct drm_device *dev, void *data, > 37 struct drm_file *file) > 38 { > 39 const unsigned long recent_enough = jiffies - DRM_I915_THROTTLE_JIFFIES; > 40 struct drm_i915_file_private *file_priv = file->driver_priv; > 41 struct i915_gem_context *ctx; > 42 unsigned long idx; > 43 long ret; > 44 > 45 /* ABI: return -EIO if already wedged */ > 46 ret = intel_gt_terminally_wedged(&to_i915(dev)->gt); > 47 if (ret) > 48 return ret; > 49 > 50 rcu_read_lock(); > 51 xa_for_each(&file_priv->context_xa, idx, ctx) { > 52 struct i915_gem_engines_iter it; > 53 struct intel_context *ce; > 54 > 55 if (!kref_get_unless_zero(&ctx->ref)) > 56 continue; > 57 rcu_read_unlock(); > 58 > 59 for_each_gem_engine(ce, > 60 i915_gem_context_lock_engines(ctx), > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > I don't understand why this takes the lock every iteration through the > loop It doesn't. static inline struct i915_gem_engines * i915_gem_context_lock_engines(struct i915_gem_context *ctx) __acquires(&ctx->engines_mutex) { mutex_lock(&ctx->engines_mutex); return i915_gem_context_engines(ctx); } static inline void i915_gem_context_unlock_engines(struct i915_gem_context *ctx) __releases(&ctx->engines_mutex) { mutex_unlock(&ctx->engines_mutex); } with the i915_gem_engines stored as a local in the iterator at the start of the for loop. -Chris