Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp273170pxb; Wed, 20 Apr 2022 22:25:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybFghXTYY2NzHpnnOqTLR2q9FoW9o+BMGYyeavxvHB6xznZaLjqJyfbt4DrSU16NRWeUZx X-Received: by 2002:a17:907:6eac:b0:6f0:a57:dfaf with SMTP id sh44-20020a1709076eac00b006f00a57dfafmr4933535ejc.105.1650518733440; Wed, 20 Apr 2022 22:25:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650518733; cv=none; d=google.com; s=arc-20160816; b=q67ozhS4xzt5aNjJufHK2FdFiE8wSu8QMWmT6+gxNEOyvDLvAqa4rS0Wa3eBOHLjcx 5yp6fWqVJChJ3qV6FBuVGJ7kLKPEL7oL2uTcpDbBeSwIlb/syiv0RZnHsHvuYGuATDQo adXTuEu1JX5UvNLJ3PxbQu/xBx1d64j/fF6ti26937V0QZQ6ZhdKicA0Tw95Z3/r9EQ2 hsweLMCLp87Hw4oaLickR4o+tYpoGWPABaww/OiNcLWpw6Wrnq8T7q58AMHS9PKv2dxK L3RRow1BFu7rBsWuKqIDhp74sHog999UoTKhzUQi/EU8Pi2EEnmY5+IRmeCkXG5ebQVb VlSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=ZbxWeXm1X4zfi7zki/F+6Y9tTnHLdesLwVcaLaLQFls=; b=mwDqoFACOweAmALcxxQwn8L+pbu1Gkw/CaDBV0yMqu1LeYn2PWwbv0tx3GC+VKpW11 yP/DIN+Wz4NaRWtYS8MEriHTkOx1U9O5EWxDicncBs/sWnCkWC2gP/XpROY+7PKK5v34 42p7eLaZvbDb/lTjkJAnLIxIAUBrUDOECpx+Ztv9SV0whLap9VwkGi4Zybtqf0UxifPx hdSybrg2AxexrlvZN3F6cfuitkKwmdv4Bjv5QRsZ0dkDmqXx7UPPqtToG3dm7cMYv3jS 0jLtctJrVToMs3lRZjbvPtF+LNKA6Mn6UfcJNUlpesGeiyKtHnOEKsiDNuUFyN80zmRL 07Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ZcfYFDG9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t18-20020a1709066bd200b006e86a7cf026si2843418ejs.802.2022.04.20.22.25.06; Wed, 20 Apr 2022 22:25:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ZcfYFDG9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377372AbiDTKAa (ORCPT + 99 others); Wed, 20 Apr 2022 06:00:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377423AbiDTKAM (ORCPT ); Wed, 20 Apr 2022 06:00:12 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 883AE3D4B6 for ; Wed, 20 Apr 2022 02:57:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1650448644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=ZbxWeXm1X4zfi7zki/F+6Y9tTnHLdesLwVcaLaLQFls=; b=ZcfYFDG99M3ujkgDZxtEOBBp1u7soAKVCauEhzD3sHQ7ur5hfKnAh9ejfWWfJ1eaTwIX97 AEWIUEjPH97PIKvtOqMf2LS1ohWYLWhNxwm4sQ5Ihx9/H/vwxMIO29l3VQLCKXiUCjs+As K48NUUz6dS8NW6vD+CbbWhwf8BAcdfw= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-81-FYWaFOFQNeiAmfQGs9-bbg-1; Wed, 20 Apr 2022 05:57:23 -0400 X-MC-Unique: FYWaFOFQNeiAmfQGs9-bbg-1 Received: by mail-wm1-f70.google.com with SMTP id q6-20020a1cf306000000b0038c5726365aso742996wmq.3 for ; Wed, 20 Apr 2022 02:57:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ZbxWeXm1X4zfi7zki/F+6Y9tTnHLdesLwVcaLaLQFls=; b=FpSfCUXNbdEc8CYAgDoOo7YGlBSuRm3lGh4F7RTyv/hvTYcTZ5NdKjrUZmjaO1fGFy pTahr+BXMt89hiOXWK66eH5TYfdA9ZepD+OYiPH1QC3FxskcbmybwR2zZVQzQPsoUheg NPHW8ZeYgWgYsWB9wwM4MKywZwboklotrHnSSH5Vtg3674ZNFeycVd5PXL9q0YAx+UAn NcFGRSHpj2uHgxsI0SnL7UyS6hP0D8Tm5yGRidtfGdjl89cdsA2A3p8tR0ht7U+xvCZ6 vRZycI5ytldGkaq5yehrqlPwh9WzPBptgXGFNSi95iXlMcQqw3JTiGHk08iwlCM2cyPi 0qzQ== X-Gm-Message-State: AOAM533/vb00YtGxTvKShXeVGHQwbn4JELZAYifG7cknpNWOrfx09Yfq SuobVgY4v4RKVjeYd5yf7fPPK3fzp8u4ZrNgthb9BXMxWk2k7s+ziEUIKfxrNCwa7oqDm2FqK7H y82P8isUHMyilTRObJYDticarkESloWPjiEkNwz3aoRWGnatEAcX/SyrmDF8K9dESOIuRhSJhMH w= X-Received: by 2002:a5d:6788:0:b0:207:ad57:cc71 with SMTP id v8-20020a5d6788000000b00207ad57cc71mr14714987wru.180.1650448642406; Wed, 20 Apr 2022 02:57:22 -0700 (PDT) X-Received: by 2002:a5d:6788:0:b0:207:ad57:cc71 with SMTP id v8-20020a5d6788000000b00207ad57cc71mr14714970wru.180.1650448642139; Wed, 20 Apr 2022 02:57:22 -0700 (PDT) Received: from kherbst.pingu.com (ip1f10bb48.dynamic.kabel-deutschland.de. [31.16.187.72]) by smtp.gmail.com with ESMTPSA id g8-20020a05600c4ec800b0039290a5b827sm11376161wmq.24.2022.04.20.02.57.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 02:57:21 -0700 (PDT) From: Karol Herbst To: linux-kernel@vger.kernel.org Cc: Karol Herbst , Chris Wilson , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH v2] drm/i915: Fix race in __i915_vma_remove_closed Date: Wed, 20 Apr 2022 11:57:20 +0200 Message-Id: <20220420095720.3331609-1-kherbst@redhat.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org i915_vma_reopen checked if the vma is closed before without taking the lock. So multiple threads could attempt removing the vma. Instead the lock needs to be taken before actually checking. v2: move struct declaration Cc: Chris Wilson Cc: intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/5732 Signed-off-by: Karol Herbst --- drivers/gpu/drm/i915/i915_vma.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index 162e8d83691b..2efdad2b43fa 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -1615,17 +1615,17 @@ void i915_vma_close(struct i915_vma *vma) static void __i915_vma_remove_closed(struct i915_vma *vma) { - struct intel_gt *gt = vma->vm->gt; - - spin_lock_irq(>->closed_lock); list_del_init(&vma->closed_link); - spin_unlock_irq(>->closed_lock); } void i915_vma_reopen(struct i915_vma *vma) { + struct intel_gt *gt = vma->vm->gt; + + spin_lock_irq(>->closed_lock); if (i915_vma_is_closed(vma)) __i915_vma_remove_closed(vma); + spin_unlock_irq(>->closed_lock); } static void force_unbind(struct i915_vma *vma) @@ -1641,6 +1641,7 @@ static void force_unbind(struct i915_vma *vma) static void release_references(struct i915_vma *vma, bool vm_ddestroy) { struct drm_i915_gem_object *obj = vma->obj; + struct intel_gt *gt = vma->vm->gt; GEM_BUG_ON(i915_vma_is_active(vma)); @@ -1651,7 +1652,9 @@ static void release_references(struct i915_vma *vma, bool vm_ddestroy) spin_unlock(&obj->vma.lock); + spin_lock_irq(>->closed_lock); __i915_vma_remove_closed(vma); + spin_unlock_irq(>->closed_lock); if (vm_ddestroy) i915_vm_resv_put(vma->vm); -- 2.35.1