Messages in this thread Patch in this message | | | Subject | Re: kernel BUG at net/core/net-sysfs.c:LINE! | From | "wanghai (M)" <> | Date | Mon, 25 Mar 2019 23:20:01 +0800 |
| |
thanks , Can it be fixed like this?
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 4ff661f..e609c8d 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -1745,16 +1745,21 @@ int netdev_register_kobject(struct net_device *ndev)
error = device_add(dev); if (error) - return error; + goto error_put_device;
error = register_queue_kobjects(ndev); - if (error) { - device_del(dev); - return error; - } + if (error) + goto error_device_del;
pm_runtime_set_memalloc_noio(dev, true);
+ return 0; + +error_device_del: + device_del(dev); +error_put_device: + ndev->reg_state = NETREG_RELEASED; + put_device(dev); return error; }
在 2019/3/24 1:16, Andy Shevchenko 写道: > Nice. > I looked briefly in the flow of this report and it looks like the patch above > should be reverted. > > The problem is not so easy to fix. One approach is to initialize device > (and thus kobject) somewhere in alloc_netdev() and put device in free_netdev() > respectively, but this might produce more interesting regressions.
| |