Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp188763pxx; Wed, 28 Oct 2020 02:09:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzyBFt/pZj00YZHsNn89VXaU9W03/Ka2B2pH1y/e/XeotyoGFaZny5Sz8Q8ANzpaPvj7IsE X-Received: by 2002:a17:907:392:: with SMTP id ss18mr6690110ejb.429.1603876174235; Wed, 28 Oct 2020 02:09:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603876174; cv=none; d=google.com; s=arc-20160816; b=i+eDcHelmx+FOPctWNH4IA2VaPHrfg5YgxoOo9Dt3Xzd+O46yWfXOcVF9EZ2LOlJWI z2dRMznm7QVM0HB69y1jz0eW/PIBc6wAY3K5RfiImazkkhrUUUFpyuZ+ylQWG4ZURM28 NXoF5S6knuTSVWe598FrGVdKVGEjHCMieDN9i+bBkqMi/u+K254ZT/S+v1W97zl8+yJf qLTKY8PWc8FY+EBGu1oxESn9jqyUCTLMwVU0DjAz/F7jstsZCvuOrIdcudBNnl1fpXAB y5KW96vGuofUMgiGY+gQanhkTuVbdjD0AEulnuIkX8BSueC79IJoTf8hZLCAL86/JZ0o nX2Q== 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=D3y5Pvr/Axctm3JEAvKalONuxrO4+b7a3effjhQyxtU=; b=szYPFpoznUI5l6jYNedJicv8fw6mLg34nLlJgIpRVBdF0U3D/JgwFr0FGOtb5MXY6p CdP9jhMNNJgOevy6dmsRcl+GykdDiV64uxZ/q8R73/PlJ1csrNPRfzuKEo7CK/SdvOJm avoU6xPoooQJlaRhEXwzsQQIRHlExqCQAZKl7Evt+TJ2wtZ59H4qultAB9k+oOhrvUkE ZILuTxni6xuMja5JoTCcbuleQr9u5cyblUsP698O9zhz5yDAr0J/OrqZ4ItM+TUu+FPP Rzt21meAQGFR7nqjo20DXHBBF3GfAXCqzLZgAehKc3SQsZOqjXUu6yFw9+qmGQfTYXB/ j5GA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=el8rnUvr; 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.02.09.11; Wed, 28 Oct 2020 02:09:34 -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=el8rnUvr; 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 S1757234AbgJ0OQx (ORCPT + 99 others); Tue, 27 Oct 2020 10:16:53 -0400 Received: from mail.kernel.org ([198.145.29.99]:34562 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756432AbgJ0ONM (ORCPT ); Tue, 27 Oct 2020 10:13:12 -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 17527206F7; Tue, 27 Oct 2020 14:13:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603807991; bh=0jkClK8mVRrdFdEr2nOJ0GaA3EDBxXgPqMe58Z54eY0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=el8rnUvreejbm0J3gbTuxULL6cQvnJhEF8K1vIzIHkL9bWnCm368Su0IRePTa7QzU jEOfXjbgMqpqZULbEX8/5RymYAx3hT5I71GJfkA2YWWbo6JspikcngGWN7K1JGM4NC dNCiwnOg+pdF6uSIfll6apb6dRMJMW4RwOqSzVVY= 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 4.14 117/191] vfio/pci: Clear token on bypass registration failure Date: Tue, 27 Oct 2020 14:49:32 +0100 Message-Id: <20201027134915.323592348@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027134909.701581493@linuxfoundation.org> References: <20201027134909.701581493@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 bdfdd506bc588..c989f777bf771 100644 --- a/drivers/vfio/pci/vfio_pci_intrs.c +++ b/drivers/vfio/pci/vfio_pci_intrs.c @@ -355,11 +355,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