Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp451225pxx; Wed, 28 Oct 2020 08:38:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzpZruYmFA8XjryuPl77m6CNtZNno7oPl+Z8dWvh0Ym8StDGqcyar2cKZVpptQEJSlku3yz X-Received: by 2002:a17:906:388d:: with SMTP id q13mr7886975ejd.92.1603899499652; Wed, 28 Oct 2020 08:38:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603899499; cv=none; d=google.com; s=arc-20160816; b=iiOJUtdKhBkM8jORJRQEkxuoprTdKvEd9GDpVccjxcZGvnFxxFri56B3Ssdp/OLwQt n5ETrPUqCq8NsmjgPaADcYLg20HBnyFPXWTIPL4Y2LtXWvJ0ZRoC18kaxS8L1rVkVEyn stQKRdnNrP+ZKQoZkKhbGaQ6JFtUBhBL74rzHZgOFpFfutVEvvHNQZk56kbnYN1GW+8y 5+7uX87a0aLfThz12ihUZ0kmPFHhdOwbkbVjoJFOu4qOXaz4a3H+2zq9vhJzeZ+l2pgx dgy5sacDhT69ex6aU6AYNq5bd1YhfYkMdnuezNBSZpGor6cTgv19e6pxi1r3i0Akeyd7 qVJA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qph0izQjGj7Ok6qbwksZCjJcZKUxo/wolicMqv9ULEU=; b=lMq1NJNuvztHD5yoB6kNz/iEb4BbBHgwW492hvdwkGq0cIIFrdqBanfXE9Ja0dVoN2 2prkU/oV7lxyP+hSTY/4b9koliIYblHuppndXbQmEBZbdL1pfB2TtzI/3XTuZZh4xFy7 EPOQWE27e4shCP2IQP/M4RM42Hl+uGx1pgjeeJZ6XoCz5+N7bEwVUWKZuwuhU+yaG94T 8VelfzwamlWrectvH0Jb1BPlzc+ufFZMVBf1G7bqdQu9E+APIDgalvh5Uli8dpfkFUrC ykS+ttFGFaSvnSjyodefen+lHh18DDOJ+ixLnrpVX3LNNzGJdluVEIo/zAEu23Gm0mpm 6cPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MYalVpGJ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f19si2736409edx.542.2020.10.28.08.37.58; Wed, 28 Oct 2020 08:38:19 -0700 (PDT) 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; dkim=pass header.i=@kernel.org header.s=default header.b=MYalVpGJ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1811707AbgJ0Qkt (ORCPT + 99 others); Tue, 27 Oct 2020 12:40:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:40482 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1801844AbgJ0Pob (ORCPT ); Tue, 27 Oct 2020 11:44:31 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 599CE22453; Tue, 27 Oct 2020 15:44:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603813444; bh=i9pwAcbMBFwVFvTsy6gwZlshudc99nSg7f/5QAsJM/4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MYalVpGJ5DfRTrFYoyD0bGS/0G55dIV9bAlXJNZGBhU1vqmgjT0InD5glHkYQlYQq jRNPQIIsd3+IaKkBX0hiz+wnTHsmo+/fUt3icRRZjDqPmQemYmEXVSkQZb/EXCTur3 mHSbGYDFgzKOePmRugvoX0q1a9iO5DLHbWVDX0jQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, guomin chen , Alex Williamson , Sasha Levin Subject: [PATCH 5.9 554/757] vfio/pci: Clear token on bypass registration failure Date: Tue, 27 Oct 2020 14:53:24 +0100 Message-Id: <20201027135516.480546728@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135450.497324313@linuxfoundation.org> References: <20201027135450.497324313@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alex Williamson [ Upstream commit 852b1beecb6ff9326f7ca4bc0fe69ae860ebdb9e ] The eventfd context is used as our irqbypass token, therefore if an eventfd is re-used, our token is the same. The irqbypass code will return an -EBUSY in this case, but we'll still attempt to unregister the producer, where if that duplicate token still exists, results in removing the wrong object. Clear the token of failed producers so that they harmlessly fall out when unregistered. Fixes: 6d7425f109d2 ("vfio: Register/unregister irq_bypass_producer") Reported-by: guomin chen Tested-by: guomin chen Signed-off-by: Alex Williamson Signed-off-by: Sasha Levin --- drivers/vfio/pci/vfio_pci_intrs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c index 1d9fb25929459..869dce5f134dd 100644 --- a/drivers/vfio/pci/vfio_pci_intrs.c +++ b/drivers/vfio/pci/vfio_pci_intrs.c @@ -352,11 +352,13 @@ static int vfio_msi_set_vector_signal(struct vfio_pci_device *vdev, vdev->ctx[vector].producer.token = trigger; vdev->ctx[vector].producer.irq = irq; ret = irq_bypass_register_producer(&vdev->ctx[vector].producer); - if (unlikely(ret)) + if (unlikely(ret)) { dev_info(&pdev->dev, "irq bypass producer (token %p) registration fails: %d\n", vdev->ctx[vector].producer.token, ret); + vdev->ctx[vector].producer.token = NULL; + } vdev->ctx[vector].trigger = trigger; return 0; -- 2.25.1