From patchwork Tue Jun 8 18:27:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 455818 Delivered-To: patch@linaro.org Received: by 2002:a02:735a:0:0:0:0:0 with SMTP id a26csp4021513jae; Tue, 8 Jun 2021 12:00:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw3yfyZ4wigqoteGZrdsrU795jziktxpjdgGB5qnRMtXrrP1wA3UuaaJcx1YS9C7tOt3ThE X-Received: by 2002:aa7:d7cf:: with SMTP id e15mr27756748eds.114.1623178848892; Tue, 08 Jun 2021 12:00:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623178848; cv=none; d=google.com; s=arc-20160816; b=J67jyJjh/2q+T4XdEMMA+9Hlkx3IGFkKNBinuuoEFZzq/UbiGvUxEiCDpzKApRQ/B2 jftvQI1vncxkX5lhgup//bkjOgJ/xygNpBvEtkKFWxE3NgtroI1TlRQlWnoFl4SC0jOy 8PYB6mpyzUnoDWDmsny67IXopwTHS4/eXIt5AdaLBnX+K8KaUiEIZafDAYmeKWQEztqd AbtNa6hKuQ1S8ZDe/K3pcWrMAHibOOF8RPAqsfbE8EA175UTfQwHlWvngyjxCXVSbMZg c1dRHIeiMudp10roc8YliQHqLFGg2/m3qWLxbt5llvtgXUGKkxIxj4OX3Gdlsy9oeFHZ ZK1w== 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=Vx5ruifHqWPQSbcKsA7LFNHMw80tIj5rpIi1DlSvAnY=; b=LGyja5TGvL6Q8pyb6UTFRvpTrW4exqK1UE+PbpVBDor6wJik829Z297g2/ZTiv4wdq PmEbJXdSAFtsvpkp2eqQqPPIT4s/lArJLe5keO8IwJ3BDiLWEIW7x9vStPfxg3v8dD5r YDseKy6JkrUIEWnKlVeUhCv4OrOncDKTah7VGs1erbOpvdwBGXM0C1zEDb1l6gH1Y3lq a7U9jf2XCHthkuDNM4WrLnknddj6yGhEFfX0zN+ja8Ki/PisFrmabFmK2REURXaSCLyO 6WYWi4JE5YTlZq9+zG9y/cEL/77PUn1YaZI+oMN3WZ8gd+BTvQkgDzoT7qGfC2rbJnTi wSzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=mhhXmekb; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-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 e3si288626ejm.412.2021.06.08.12.00.48; Tue, 08 Jun 2021 12:00:48 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-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=mhhXmekb; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-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 S235761AbhFHTCk (ORCPT + 12 others); Tue, 8 Jun 2021 15:02:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:35908 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237502AbhFHTAo (ORCPT ); Tue, 8 Jun 2021 15:00:44 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5C81D61446; Tue, 8 Jun 2021 18:43:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1623177833; bh=Xd8sKBW52rGJ+PBUBAVrXHiFQyeJpduTKPcd2uOIiJs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mhhXmekbraBOR+Dnxp5VEYFFW/UYbm1Ucv49dhQuLzpix87vt60xgNuQEO11gUcLR rUKQG85gkAmgZT2XS2t6F8d8xR9URDYIwE3yxpUlClWig5pmMrqfoMUCpB53tOWGzt 753n3r2kffDoqcn4n3kVddWw50crMmpko5QMTNiI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Jason A. Donenfeld" , "David S. Miller" Subject: [PATCH 5.10 082/137] wireguard: use synchronize_net rather than synchronize_rcu Date: Tue, 8 Jun 2021 20:27:02 +0200 Message-Id: <20210608175945.143979330@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210608175942.377073879@linuxfoundation.org> References: <20210608175942.377073879@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Jason A. Donenfeld commit 24b70eeeb4f46c09487f8155239ebfb1f875774a upstream. Many of the synchronization points are sometimes called under the rtnl lock, which means we should use synchronize_net rather than synchronize_rcu. Under the hood, this expands to using the expedited flavor of function in the event that rtnl is held, in order to not stall other concurrent changes. This fixes some very, very long delays when removing multiple peers at once, which would cause some operations to take several minutes. Fixes: e7096c131e51 ("net: WireGuard secure network tunnel") Cc: stable@vger.kernel.org Signed-off-by: Jason A. Donenfeld Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireguard/peer.c | 6 +++--- drivers/net/wireguard/socket.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) --- a/drivers/net/wireguard/peer.c +++ b/drivers/net/wireguard/peer.c @@ -89,7 +89,7 @@ static void peer_make_dead(struct wg_pee /* Mark as dead, so that we don't allow jumping contexts after. */ WRITE_ONCE(peer->is_dead, true); - /* The caller must now synchronize_rcu() for this to take effect. */ + /* The caller must now synchronize_net() for this to take effect. */ } static void peer_remove_after_dead(struct wg_peer *peer) @@ -161,7 +161,7 @@ void wg_peer_remove(struct wg_peer *peer lockdep_assert_held(&peer->device->device_update_lock); peer_make_dead(peer); - synchronize_rcu(); + synchronize_net(); peer_remove_after_dead(peer); } @@ -179,7 +179,7 @@ void wg_peer_remove_all(struct wg_device peer_make_dead(peer); list_add_tail(&peer->peer_list, &dead_peers); } - synchronize_rcu(); + synchronize_net(); list_for_each_entry_safe(peer, temp, &dead_peers, peer_list) peer_remove_after_dead(peer); } --- a/drivers/net/wireguard/socket.c +++ b/drivers/net/wireguard/socket.c @@ -430,7 +430,7 @@ void wg_socket_reinit(struct wg_device * if (new4) wg->incoming_port = ntohs(inet_sk(new4)->inet_sport); mutex_unlock(&wg->socket_update_lock); - synchronize_rcu(); + synchronize_net(); sock_free(old4); sock_free(old6); }