Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp801552ybk; Wed, 13 May 2020 13:31:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzKTPr+Na9mM7IajxcNJxfIFBbqKfMTEoNrN/oOdODPsHRkCTlJp35RWXWjmlQ0fK/zyb3D X-Received: by 2002:a17:906:9605:: with SMTP id s5mr724047ejx.135.1589401891044; Wed, 13 May 2020 13:31:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589401891; cv=none; d=google.com; s=arc-20160816; b=BWGztLyK83HNU3Y3RgxEYapenh+Fp88NIHA/cZpxDdbyYHIaZt4H1Dy8TYDvp0J4tA GREaNsx/LZhpf7FqKE/AmtLjFykMalBQNZgvGRQYcQIZJFjEuqPyXuQk8auTPkeaSBeU nMiWFYlHXul4Gi1pxJWjARhSAMojeNpdStuXfSZBOyWqR1RcTyaOUehaLXIu45mqBmi9 clAYmFhpE1zkJYsOb6+NEoPOtnOgrLppO7FiBpFeMoHSjyxtKzEFqiVwoWuYoEL2UNzM 3XP/YakxRaUmNzr+Do6xAisNcPnFxLhUmzY4N32KBOaeUAFn1KoCbgZ55YVqctKwP9v1 AoEw== 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=xxmqGZaV91axrEWdwG3LS1HyegRVuPiqnYOYNxYkWWg=; b=qlA44C/EZQZ8pPXx8iGReIOVBsSRKy+/6Tq57cEMoPnMgZGQhN9GduPM9Vei1vkEdF bIN5U8l9TznELi7osbSEHL5TnDTavfW0dnDlP6F3V3UIPNHB8dG+VdRyglJojdbZS2DF NJ+cSFPiKJA+U347VZNmYRnWhZVgAMwG4/lXp5Bi0/8EqcFZiOM1Qhs6mlrvp/CHEcQ/ SBYZMQolkrbaXY5Osix9Lz7PHmJZR48/+HdMt9479l4cU35NFfDsUDc9F3FT0ThErMKD RSnCUMPdBvhk4/2w5WAwat09BE9yy9AdE7a/ba+CMNc6HW1us4inF+F7pal+C/SfKHZz bXIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2QHmKl3q; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a20si400990edm.473.2020.05.13.13.31.08; Wed, 13 May 2020 13:31:31 -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=2QHmKl3q; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733087AbgEMJxm (ORCPT + 99 others); Wed, 13 May 2020 05:53:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:55768 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732603AbgEMJxj (ORCPT ); Wed, 13 May 2020 05:53:39 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 C896820575; Wed, 13 May 2020 09:53:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589363619; bh=9Id/3gUvE69ng67jci/Ipgi+B0JOa0NZwiI0Aii5NOI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2QHmKl3qoPjwyAzTFQ4SI5rdK8277nhYvaNw6iQ2l+WQAc5PqmFdztZZSVxBT6iQU mYqbAqwziYN60fgPBviZNT4LAmwEH1ZgmxuyP3rIDpoASZMdNGsuWVDO5Ir7CgvUaW odLPjMsNUixIzn3gv4vHpDqfBT5/NVXMFTsD3dxQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sultan Alsawaf , Wang Jian , "Jason A. Donenfeld" , "David S. Miller" Subject: [PATCH 5.6 056/118] wireguard: send/receive: cond_resched() when processing worker ringbuffers Date: Wed, 13 May 2020 11:44:35 +0200 Message-Id: <20200513094421.948432116@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200513094417.618129545@linuxfoundation.org> References: <20200513094417.618129545@linuxfoundation.org> User-Agent: quilt/0.66 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 From: "Jason A. Donenfeld" [ Upstream commit 4005f5c3c9d006157ba716594e0d70c88a235c5e ] Users with pathological hardware reported CPU stalls on CONFIG_ PREEMPT_VOLUNTARY=y, because the ringbuffers would stay full, meaning these workers would never terminate. That turned out not to be okay on systems without forced preemption, which Sultan observed. This commit adds a cond_resched() to the bottom of each loop iteration, so that these workers don't hog the core. Note that we don't need this on the napi poll worker, since that terminates after its budget is expended. Suggested-by: Sultan Alsawaf Reported-by: Wang Jian Fixes: e7096c131e51 ("net: WireGuard secure network tunnel") Signed-off-by: Jason A. Donenfeld Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireguard/receive.c | 2 ++ drivers/net/wireguard/send.c | 4 ++++ 2 files changed, 6 insertions(+) --- a/drivers/net/wireguard/receive.c +++ b/drivers/net/wireguard/receive.c @@ -516,6 +516,8 @@ void wg_packet_decrypt_worker(struct wor &PACKET_CB(skb)->keypair->receiving)) ? PACKET_STATE_CRYPTED : PACKET_STATE_DEAD; wg_queue_enqueue_per_peer_napi(skb, state); + if (need_resched()) + cond_resched(); } } --- a/drivers/net/wireguard/send.c +++ b/drivers/net/wireguard/send.c @@ -281,6 +281,8 @@ void wg_packet_tx_worker(struct work_str wg_noise_keypair_put(keypair, false); wg_peer_put(peer); + if (need_resched()) + cond_resched(); } } @@ -305,6 +307,8 @@ void wg_packet_encrypt_worker(struct wor wg_queue_enqueue_per_peer(&PACKET_PEER(first)->tx_queue, first, state); + if (need_resched()) + cond_resched(); } }