Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1575671pxb; Mon, 22 Feb 2021 05:47:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJw3p/eNxCNtww2Zq70BJtTwGn+2t/g4vxdIp22Skf9SRc9wdvT1jWy3jsimn++gjFWBDh3L X-Received: by 2002:a17:906:1ecc:: with SMTP id m12mr2084558ejj.4.1614001662485; Mon, 22 Feb 2021 05:47:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614001662; cv=none; d=google.com; s=arc-20160816; b=KO8WN/r3dVDoPwJjBbbHkM9WfKU67BKnW6yp/47+aTwKbcCra8QJ0ACxcIcdjOz7/I mu44nDqeatSNHFyIetkBlYMSIVpfX2ENmbQsW3psxVbQCAmfW5TPvc6LBDj3/saWhA/D NduYpCL/KaiaJhVMEHnmDJmtCagiBEjMqzql8QY14mHDUhpD/n++ANVesADAhULhu8b5 jFxOisUbXwo8ioGPENo3ySj8WzLdiTVz31MDd9dCDFMFQM6GST0mIIP6VxNYrrnCjuD2 O7fPbIcrPryzsrltSnL8IN+IMquc7HKap2X/FNgqVRYZkD+eL28GoNCrtq9RDBAHYP2W qTZw== 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=OzOfgBk6vGUNzcSGyGVROl/9jN/9TweQbDkq12wlKjA=; b=ibmnw82VKOU+amvEu0ENCFFmXHz3y2i7M6Dz3nLXjayt4M5e66X5k3GTVmSojlGMhX 6cDzw0tfLVapyJGCe7HN+P+TnH1rgGTI8N7VvTnWRIbOuGplHE3/o/TsHLz7I4GQq2kw 0Kfcjj7Up4eX5yDUIsoC152mEOiUMUbiu/mh9Cx+6NUeDOwheTOasHrwXMRys4P43LBj 6M44Vxv/VuNNOGcMXI8QVkSZEcLekmPIb2Af8+dzcERmn2w4DlekFlyVV7UhDYz7ldCQ HU1c/M3+Szxvdu4XVVmguCUqWZVoQWa71DJcEoTEtYoRPuE+SUJEAfszF4fhwBSRTp0g ODYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=tl8XckAY; 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=pass (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 h5si12490146edk.570.2021.02.22.05.47.19; Mon, 22 Feb 2021 05:47:42 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=tl8XckAY; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231861AbhBVNqj (ORCPT + 99 others); Mon, 22 Feb 2021 08:46:39 -0500 Received: from mail.kernel.org ([198.145.29.99]:56552 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231650AbhBVMoj (ORCPT ); Mon, 22 Feb 2021 07:44:39 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2189464F51; Mon, 22 Feb 2021 12:41:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1613997685; bh=4HrBhgJIRgRPr9JuQrDIoTRdOmW5eiU2KLqhXKWskYc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tl8XckAYdtIdwDBwncsHrxppnaUnl90JwKJSkGP1ZEk7AplazOVvhKCHEQiePZXX6 wooF0JG5kSeqrnh7qu7AUD5f3zgQr7yjl63RSswDNRJ3A+mcGPeDIeL2+vzQjADWdQ p57P2X8kTf6/YXsf+HMYbXT74uegIhUcEnzaU4Ic= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Igor Druzhinin , Juergen Gross , Wei Liu , Jakub Kicinski , Sasha Levin Subject: [PATCH 4.9 26/49] xen/netback: avoid race in xenvif_rx_ring_slots_available() Date: Mon, 22 Feb 2021 13:36:24 +0100 Message-Id: <20210222121026.881460743@linuxfoundation.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210222121022.546148341@linuxfoundation.org> References: <20210222121022.546148341@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: Juergen Gross [ Upstream commit ec7d8e7dd3a59528e305a18e93f1cb98f7faf83b ] Since commit 23025393dbeb3b8b3 ("xen/netback: use lateeoi irq binding") xenvif_rx_ring_slots_available() is no longer called only from the rx queue kernel thread, so it needs to access the rx queue with the associated queue held. Reported-by: Igor Druzhinin Fixes: 23025393dbeb3b8b3 ("xen/netback: use lateeoi irq binding") Signed-off-by: Juergen Gross Acked-by: Wei Liu Link: https://lore.kernel.org/r/20210202070938.7863-1-jgross@suse.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/xen-netback/rx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/xen-netback/rx.c b/drivers/net/xen-netback/rx.c index f152246c7dfb7..ddfb1cfa2dd94 100644 --- a/drivers/net/xen-netback/rx.c +++ b/drivers/net/xen-netback/rx.c @@ -38,10 +38,15 @@ static bool xenvif_rx_ring_slots_available(struct xenvif_queue *queue) RING_IDX prod, cons; struct sk_buff *skb; int needed; + unsigned long flags; + + spin_lock_irqsave(&queue->rx_queue.lock, flags); skb = skb_peek(&queue->rx_queue); - if (!skb) + if (!skb) { + spin_unlock_irqrestore(&queue->rx_queue.lock, flags); return false; + } needed = DIV_ROUND_UP(skb->len, XEN_PAGE_SIZE); if (skb_is_gso(skb)) @@ -49,6 +54,8 @@ static bool xenvif_rx_ring_slots_available(struct xenvif_queue *queue) if (skb->sw_hash) needed++; + spin_unlock_irqrestore(&queue->rx_queue.lock, flags); + do { prod = queue->rx.sring->req_prod; cons = queue->rx.req_cons; -- 2.27.0