All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] net: pppoe: check register_netdevice_notifier() error in pppoe_init()
@ 2026-08-03  8:59 Minhong He
  2026-08-04  8:28 ` Qingfang Deng
  0 siblings, 1 reply; 4+ messages in thread
From: Minhong He @ 2026-08-03  8:59 UTC (permalink / raw)
  To: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, netdev
  Cc: Qingfang Deng, Kees Cook, Eric Woudstra, Felix Fietkau,
	linux-kernel

pppoe_init() ignores register_netdevice_notifier() errors and always
returns success after installing packet handlers, which can leave the
module loaded without its netdev notifier registered.

Check the error and unwind the packet handlers and protocol registration
on failure.

Signed-off-by: Minhong He <heminhong@kylinos.cn>
---
 drivers/net/ppp/pppoe.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ppp/pppoe.c b/drivers/net/ppp/pppoe.c
index 4a018acb5262..035795b120e0 100644
--- a/drivers/net/ppp/pppoe.c
+++ b/drivers/net/ppp/pppoe.c
@@ -1278,10 +1278,19 @@ static int __init pppoe_init(void)
 		dev_add_offload(&pppoe_packet_offload);
 	dev_add_pack(&pppoes_ptype);
 	dev_add_pack(&pppoed_ptype);
-	register_netdevice_notifier(&pppoe_notifier);
+
+	err = register_netdevice_notifier(&pppoe_notifier);
+	if (err)
+		goto out_unregister_packs;
 
 	return 0;
 
+out_unregister_packs:
+	dev_remove_pack(&pppoed_ptype);
+	dev_remove_pack(&pppoes_ptype);
+	if (IS_ENABLED(CONFIG_INET))
+		dev_remove_offload(&pppoe_packet_offload);
+	unregister_pppox_proto(PX_PROTO_OE);
 out_unregister_pppoe_proto:
 	proto_unregister(&pppoe_sk_proto);
 out_unregister_net_ops:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-08-05  1:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-03  8:59 [PATCH net] net: pppoe: check register_netdevice_notifier() error in pppoe_init() Minhong He
2026-08-04  8:28 ` Qingfang Deng
2026-08-04 14:20   ` Qingfang Deng
2026-08-05  1:52     ` Jakub Kicinski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.