Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp233564pxx; Wed, 28 Oct 2020 03:37:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwoa40r/zLLhy6+rq56pc/D9PAJ9hCxAvMyfEQf6VN2PSqpwDXPgwH+tjvo5OWFI4hudOJf X-Received: by 2002:a50:e041:: with SMTP id g1mr7150867edl.385.1603881426057; Wed, 28 Oct 2020 03:37:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603881426; cv=none; d=google.com; s=arc-20160816; b=wl+20GGbvaITqqjFEdlsC48RrY0N2Z6Ru7IiLjJpUq4+c3Wj1qZ0H+EMPQNyeasfD4 IkgdftMsG/4FhH4Iqf8U9+GYzVSjqBbWQxmObnobJiyCxRo8rLWkETPnL7Sd2sB1ER9G FI3amdO9NS/5Vy9GvgVImhm5bYjfucruFPWjODj//VpfgRMz6HYNjmLelhtPqSQV/aLn pfaDs/dX3qCaGZWL34TPjmUrA3FmUAkCmmneS1TGptmDgpF3HUOpspgBdeOMP9hUuc10 MFsUloN4IlYtwjLRV/pywXJG0CbBVdAMg2CbKs8qGUvY/v6WKJNQlqCeNYhmVq5UVotV dQTQ== 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=czJoYLsqisG31jcyAz8FjWkYKwYefOibVnl3VRaLT54zJXF6cucSVljjzPGgo6AiFJ UuYBdi3RW8/XcN/oz/Mllopqqrd3RHA6b7fMf8IpsaYUPN8j5E2Y3fVP34qDCRR/CU42 O+AwuFtd15lIVTHs+wT4reWE3l7LkQ3ch7b9wr+IgRrxez0kZmmt62euBjGRrGOYJAJO XaL9C+hYew3VbTomW5WjMGoKcRGRjL5A9Nc1hUsElarFNH93xNlFiI2BPax/Qcg7wduK C72lrKaAPhBoinknH9h4x6BJ3QOzjBGmdTGjhwluWLLXezI5/IjivRMePFtTckUw1uMi lslA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xu6osvY0; 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 jr1si3058858ejb.164.2020.10.28.03.36.43; Wed, 28 Oct 2020 03:37:06 -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=xu6osvY0; 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 S1762643AbgJ0Ons (ORCPT + 99 others); Tue, 27 Oct 2020 10:43:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:41030 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1762244AbgJ0Olh (ORCPT ); Tue, 27 Oct 2020 10:41:37 -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 28F1121D7B; Tue, 27 Oct 2020 14:41:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603809696; bh=i9pwAcbMBFwVFvTsy6gwZlshudc99nSg7f/5QAsJM/4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xu6osvY092aUMVDMNXp2ekAQvpHVYjQbz5opXO0MwjhXt7QIUVb4xaH05SrhoA1EF hFTEed8T8RSskSbyRC2HIhujg8D9Rmt+tH03uI1G4075xd3qEMYelSgDLzUJFh+EBG aRZdUqAMcz0UE7cHAHSjuZCgduJ0m0iO2shZlyaw= 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.4 280/408] vfio/pci: Clear token on bypass registration failure Date: Tue, 27 Oct 2020 14:53:38 +0100 Message-Id: <20201027135508.031315849@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135455.027547757@linuxfoundation.org> References: <20201027135455.027547757@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