Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2273604imc; Tue, 12 Mar 2019 10:21:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqxhJBfWko9THpEsUFr73C6r8sp9yX6Yvi19LGR7zQvWAWn1R/I6hYNVYYgGx/4S6KpXpQpp X-Received: by 2002:a63:f914:: with SMTP id h20mr2316587pgi.322.1552411267011; Tue, 12 Mar 2019 10:21:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552411267; cv=none; d=google.com; s=arc-20160816; b=r2k2Kdq7m1OIgSTCtiKw+t4RJ0TGfWNrDdv3oZ9OOW1FL6fD8eILaIFVKQ9BX+Wumb fUuqoY1c4HVhQC7bq0OM+IJnyy7QQYLkC2PQUz2L1JPIKrtAvVs2rjWwc9O0aTjN7lSv e0mLnJ/8LuRcrXT+2VFhulN4ngJHhbEvU0bbNz+2AkEE90DeanHOjDPwRhe8E+HDsUIN YC4PDhwX0NUJ+4TA/2Dfk7OJys+ouBouCRY5ify58pwPmUnasIK4gco8Ax/6QJnvz6Il /0iCNKWJCRnoazgzNCRdLzNvyGYF998LQErCw46ytb/0d1xIn/NLLhQ7Xm2HB5NDGnR0 5Tag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=K68+FqJKssVQA5AcJ0mR7htl6HfRI2etveKUCj1NCrc=; b=Qq3EhQOt8zsVaa9s5ApS0lfDLkHT2eaT+Be/DVviG/2kVrhL4niltpE0M+pgoEPb6m mNoDQPLrDTvo0JgiRZmeyqP5bth6JLWQqx0GT/xgKKxw2adBDNqo5WlupmiVw46TdfOZ Kenvpx5tPldfYjuRixBV0ln1FT2jDiKqNhyw904rx1bstp14+W5sMQItjiZJuo8s35wi p4esEK2iun6viJlr4G42tuWBbAabc8TUH3eLBAVE+56SPWettbr+VoVbzVg1myxQcUu1 SBX496kWY4eTxJixtblPuFlhA8IHJrq9uZ/KKFaDsrvl1xYOp6TwpYxmi0QlruwsY3s9 3Fdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rjzUhp6p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 32si8793909pls.415.2019.03.12.10.20.51; Tue, 12 Mar 2019 10:21:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rjzUhp6p; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730034AbfCLRST (ORCPT + 99 others); Tue, 12 Mar 2019 13:18:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:33574 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729655AbfCLRRe (ORCPT ); Tue, 12 Mar 2019 13:17:34 -0400 Received: from localhost (unknown [104.133.8.98]) (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 E1AE02186A; Tue, 12 Mar 2019 17:17:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552411054; bh=frYxrMSd+AzJSnJ8BB5h3ppsB5r7/iaIa9zuRBA8Gag=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rjzUhp6pIrLm9sKI0pr9c9HbXyZ7dIvXFGHR1N2jH7wAgB5mTWKqvJDNqUIp/KANe aX0Mt50TVdq4EUCR6Wz6K+PmBaa1SMO//tBl9YOvJLk/8Exi4hBqGUvnwT0M1fv3F1 4pT4WiBuJVloleAFHKJqIwS1M34Rx1FI03Hczlgc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Igor Druzhinin , Paul Durrant , "David S. Miller" Subject: [PATCH 4.9 21/96] xen-netback: dont populate the hash cache on XenBus disconnect Date: Tue, 12 Mar 2019 10:09:39 -0700 Message-Id: <20190312171036.123110394@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190312171034.530434962@linuxfoundation.org> References: <20190312171034.530434962@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Igor Druzhinin [ Upstream commit a2288d4e355992d369c50c45d017a85f6061ff71 ] Occasionally, during the disconnection procedure on XenBus which includes hash cache deinitialization there might be some packets still in-flight on other processors. Handling of these packets includes hashing and hash cache population that finally results in hash cache data structure corruption. In order to avoid this we prevent hashing of those packets if there are no queues initialized. In that case RCU protection of queues guards the hash cache as well. Signed-off-by: Igor Druzhinin Reviewed-by: Paul Durrant Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/xen-netback/hash.c | 2 ++ drivers/net/xen-netback/interface.c | 7 +++++++ 2 files changed, 9 insertions(+) --- a/drivers/net/xen-netback/hash.c +++ b/drivers/net/xen-netback/hash.c @@ -435,6 +435,8 @@ void xenvif_init_hash(struct xenvif *vif if (xenvif_hash_cache_size == 0) return; + BUG_ON(vif->hash.cache.count); + spin_lock_init(&vif->hash.cache.lock); INIT_LIST_HEAD(&vif->hash.cache.list); } --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -152,6 +152,13 @@ static u16 xenvif_select_queue(struct ne { struct xenvif *vif = netdev_priv(dev); unsigned int size = vif->hash.size; + unsigned int num_queues; + + /* If queues are not set up internally - always return 0 + * as the packet going to be dropped anyway */ + num_queues = READ_ONCE(vif->num_queues); + if (num_queues < 1) + return 0; if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE) return fallback(dev, skb) % dev->real_num_tx_queues;