Thread (4 messages) 4 messages, 4 authors, 2025-11-12

Re: [PATCH] net: Fix error handling in netdev_register_kobject

flat view

From: Eric Dumazet <hidden>
Date: 2025-11-07 11:20:15
Also in: lkml, stable

On Fri, Nov 7, 2025 at 12:01 AM Ma Ke [off-list ref] wrote:
quoted hunk ↗ jump to hunk
After calling device_initialize(), the reference count of the device
is set to 1. If device_add() fails or register_queue_kobjects() fails,
the function returns without calling put_device() to release the
initial reference, causing a memory leak of the device structure.
Similarly, in netdev_unregister_kobject(), after calling device_del(),
there is no call to put_device() to release the initial reference,
leading to a memory leak. Add put_device() in the error paths of
netdev_register_kobject() and after device_del() in
netdev_unregister_kobject() to properly release the device references.

Found by code review.

Cc: stable@vger.kernel.org
Fixes: a1b3f594dc5f ("net: Expose all network devices in a namespaces in sysfs")
Signed-off-by: Ma Ke <redacted>
---
 net/core/net-sysfs.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index ca878525ad7c..d3895f26a0c8 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -2327,6 +2327,7 @@ void netdev_unregister_kobject(struct net_device *ndev)
        pm_runtime_set_memalloc_noio(dev, false);

        device_del(dev);
+       put_device(dev);
Please take a look at free_netdev()
quoted hunk ↗ jump to hunk
 }

 /* Create sysfs entries for network device. */
@@ -2357,7 +2358,7 @@ int netdev_register_kobject(struct net_device *ndev)

        error = device_add(dev);
        if (error)
-               return error;
+               goto out_put_device;

        error = register_queue_kobjects(ndev);
        if (error) {
@@ -2367,6 +2368,10 @@ int netdev_register_kobject(struct net_device *ndev)

        pm_runtime_set_memalloc_noio(dev, true);

+       return 0;
+
+out_put_device:
+       put_device(dev);
        return error;
This seems bogus.

Was your report based on AI or some tooling ?

You would think that syzbot would have found an issue a long time ago...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help