From nobody Sat Feb 7 15:09:58 2026 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D48DA2C08D0 for ; Mon, 2 Feb 2026 09:21:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770024086; cv=none; b=BsH3aKmMMN8ANG4kh0Rv4uuLh+soviaod8dDhDvkgbpXrUBR4O1hZiWoSlj+z9eUPGLCfQdpZD7KPW0pVMFRrWl6nLmM82MIWHRJE7756Ccuiyuez0JDJvPJA7zbWQtdlAcJjA5TVXiU9n/ncIcpluPZiTYiNZJ2R/yttQhoqTA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770024086; c=relaxed/simple; bh=fFtqSMHXb9fNhsIfufDnR1QvTKYu6ig+lcJhqVNRf+8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=ZSDit675bvXarl8RvgTX/3Lsm64//AM6c5c0Jexa6fROywPaxn4QQVMZViljzAjFSnX9Ez85/imJ64xhDLc8vrNVH6ycu/5RnsdnXmHqmx/8A30StwPh17lwJTTM3wYLF0KL2su27WZLF/rZhBnwQinirlfOvfEleXpmzjfrHzI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=A74BCzbh; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="A74BCzbh" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b884a84e655so613455466b.0 for ; Mon, 02 Feb 2026 01:21:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770024082; x=1770628882; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=naVjf+oFoEPGbCcN7OBJPZpgIFxQpMICtFGQ99z2yDo=; b=A74BCzbhBSg9/nZaAETyOxSicTLoHOEZubPjgL1U8PK2HGaz7Gokyn88vt2MBsK9B+ y768u1lQIDcM37EvqamYyvpR3lCpTHzkRSJuiUc1WLgUf043mMa9GvA13APqOuAFQ2m4 XI6zRPt1v6989xcDJaFolPSZ4AV4zeOc1BxcgV9iw3qxD7xrhtd8zbxcXK6jCwUIRkBC Q0cPVuck8WtWhARXsGpalAIqoAJDdg7Gcy8JDJPJJZOtEE8RkLvJU/zOJ+GJVUiQmdkf 68ifs5K6TUTGfUGq8sBldqb0rv11TMFA3NVMRE2pm6HsZRnfcSyZo6AdA7odW8upWsMN MP7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770024082; x=1770628882; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=naVjf+oFoEPGbCcN7OBJPZpgIFxQpMICtFGQ99z2yDo=; b=Cw+qI/4w4DmphO1lLhj7OaupndQ+dKgUQLIGCKj2AUtYkZtKDaGQaFEDFlZwRCn+oC lUmXBcvF+Gg59sT1FNkZjPQr7hOXMLVhLxgMhzEFuVPmnUZ/UMfw6ABXh9aXhVNz+iVh IN5oMQ6vx44R/4VvWZGgpBpDPHD4QmI6EuYwsDCqq5rtTuxEr12ogTXfEpB+m4SOsNd+ 9i8aR9Clj4NYkLNQbl9CqYtt5III5D7LSOP35kmoPmkkQIrI/fQVcLK2X8ZwNah/FeDk oRH0aDmXc75fNZz2SuQHx+wz8qNNVqeM9QWkraUWkGXaFhRahAZBaG61yT3p1f4XrdQZ n+kg== X-Forwarded-Encrypted: i=1; AJvYcCWQ4u08t8ivdTVw8DIkMYSQTEPwTlBFTcy/kTG3F6EDtXt4sH7ulSeTij2ulYDm9EeXE/5RBSpqXS3pn/U=@vger.kernel.org X-Gm-Message-State: AOJu0YwFhQpAcqxUPpCCwa215Eop8Y7y/kk7sxb6AIXg7Ge1ospf/mgO Luv9mXWoH3q9ZmoMfaNjRHY2yjcf1O50IjsYhcVwhp5YqN7JG0tvMWP8 X-Gm-Gg: AZuq6aI8x9wHdO67xbuxyU93ktvpdsQgh4AND+/doFXwo+BkNbeQwwWpDVqysbw5SIY penvj9+OdreReFUv+x4sw1gTouTpNIOgoVbIU29rvwMxbpv736kayzKM4korqi0+HZUGr4fqKgJ +ZrqWMd31IOLIHtzJrqCVZK9XLmb1FlRkc7KBZ/aImPa3E6LtnEzyStR8GfUWe/TO7o0m+T48Oy qpdPxFKTmrYqsUmowSEqyDB6f2BEvf3DwDiAXAyCCtHSU20ylsEue1510QwKfsAfHunwPj5z23Y 8oKZ97qlZW0BAE7mCDkzGbmeRYLmM2g1u8NHk3Ra+z+57PvSBCQFFJ7McfG3wH/at8CKkw5zFL8 LsndhlffgbaQlVY5GZ5vf6jYDcdSCC3XDgkBIO83vE/KvOM4Zn7A8lWZ54chgwefxIQ== X-Received: by 2002:a17:907:ea6:b0:b8a:fc17:56e1 with SMTP id a640c23a62f3a-b8dff56b0d8mr752769966b.6.1770024081936; Mon, 02 Feb 2026 01:21:21 -0800 (PST) Received: from gmail.com ([2a09:bac5:4e22:26fa::3e2:4]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8dbeffedd3sm823213166b.29.2026.02.02.01.21.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 01:21:21 -0800 (PST) From: Qingfang Deng To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-ppp@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2] ppp: remove ppp->closing check Date: Mon, 2 Feb 2026 17:21:15 +0800 Message-ID: <20260202092116.266568-1-dqfext@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The ppp->closing flag is used to test if an interface is closing down. However, when .ndo_uninit() is called (where ppp->closing is set to 1), dev_close() has already brought down the interface, and synchronize_net() guarantees that no pending TX/RX in the network path can take place. Thus, the check in the network path is unnecessary. For file operations - ppp_read(), ppp_write(), and ppp_poll(), can normally still send or receive skbs. ppp_read() and ppp_poll() are safe because ppp_dev_uninit() sets pf->dead before waking them up, causing both to exit cleanly. ppp_write() does not check pf->dead, but ppp_push() verifies that ppp->channels list is not empty before sending. Remove the ppp->closing check. Signed-off-by: Qingfang Deng --- v2: explain that the race against file operations is safe. - https://lore.kernel.org/linux-ppp/20241104092434.2677-1-dqfext@gmail.com/ drivers/net/ppp/ppp_generic.c | 38 ++++++++++++----------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c index f9f0f16c41d1..c24a2721ac9b 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c @@ -142,7 +142,6 @@ struct ppp { unsigned long last_xmit; /* jiffies when last pkt sent 9c */ unsigned long last_recv; /* jiffies when last pkt rcvd a0 */ struct net_device *dev; /* network interface device a4 */ - int closing; /* is device closing down? a8 */ #ifdef CONFIG_PPP_MULTILINK int nxchan; /* next channel to send something on */ u32 nxseq; /* next sequence number to send */ @@ -1566,10 +1565,6 @@ static void ppp_dev_uninit(struct net_device *dev) struct ppp *ppp =3D netdev_priv(dev); struct ppp_net *pn =3D ppp_pernet(ppp->ppp_net); =20 - ppp_lock(ppp); - ppp->closing =3D 1; - ppp_unlock(ppp); - mutex_lock(&pn->all_ppp_mutex); unit_put(&pn->units_idr, ppp->file.index); mutex_unlock(&pn->all_ppp_mutex); @@ -1652,23 +1647,19 @@ static void ppp_setup(struct net_device *dev) static void __ppp_xmit_process(struct ppp *ppp, struct sk_buff *skb) { ppp_xmit_lock(ppp); - if (!ppp->closing) { - ppp_push(ppp); + ppp_push(ppp); =20 - if (skb) - skb_queue_tail(&ppp->file.xq, skb); - while (!ppp->xmit_pending && - (skb =3D skb_dequeue(&ppp->file.xq))) - ppp_send_frame(ppp, skb); - /* If there's no work left to do, tell the core net - code that we can accept some more. */ - if (!ppp->xmit_pending && !skb_peek(&ppp->file.xq)) - netif_wake_queue(ppp->dev); - else - netif_stop_queue(ppp->dev); - } else { - kfree_skb(skb); - } + if (skb) + skb_queue_tail(&ppp->file.xq, skb); + while (!ppp->xmit_pending && + (skb =3D skb_dequeue(&ppp->file.xq))) + ppp_send_frame(ppp, skb); + /* If there's no work left to do, tell the core net + code that we can accept some more. */ + if (!ppp->xmit_pending && !skb_peek(&ppp->file.xq)) + netif_wake_queue(ppp->dev); + else + netif_stop_queue(ppp->dev); ppp_xmit_unlock(ppp); } =20 @@ -2218,10 +2209,7 @@ static inline void ppp_do_recv(struct ppp *ppp, struct sk_buff *skb, struct channel *pch) { ppp_recv_lock(ppp); - if (!ppp->closing) - ppp_receive_frame(ppp, skb, pch); - else - kfree_skb(skb); + ppp_receive_frame(ppp, skb, pch); ppp_recv_unlock(ppp); } =20 --=20 2.43.0