Description
In the Linux kernel, the following vulnerability has been resolved: driver core: fix resource leak in device_add() When calling kobject_add() failed in device_add(), it will call cleanup_glue_dir() to free resource. But in kobject_add(), dev->kobj.parent has been set to NULL. This will cause resource leak. The process is as follows: device_add() get_device_parent() class_dir_create_and_add() kobject_add() //kobject_get() ... dev->kobj.parent = kobj; ... kobject_add() //failed, but set dev->kobj.parent = NULL ... glue_dir = get_glue_dir(dev) //glue_dir = NULL, and goto //"Error" label ... cleanup_glue_dir() //becaues glue_dir is NULL, not call //kobject_put() The preceding problem may cause insmod mac80211_hwsim.ko to failed. sysfs: cannot create duplicate filename '/devices/virtual/mac80211_hwsim' Call Trace: <TASK> dump_stack_lvl+0x8e/0xd1 sysfs_warn_dup.cold+0x1c/0x29 sysfs_create_dir_ns+0x224/0x280 kobject_add_internal+0x2aa/0x880 kobject_add+0x135/0x1a0 get_device_parent+0x3d7/0x590 device_add+0x2aa/0x1cb0 device_create_groups_vargs+0x1eb/0x260 device_create+0xdc/0x110 mac80211_hwsim_new_radio+0x31e/0x4790 [mac80211_hwsim] init_mac80211_hwsim+0x48d/0x1000 [mac80211_hwsim] do_one_initcall+0x10f/0x630 do_init_module+0x19f/0x5e0 load_module+0x64b7/0x6eb0 __do_sys_finit_module+0x140/0x200 do_syscall_64+0x35/0x80 entry_SYSCALL_64_after_hwframe+0x46/0xb0 </TASK> kobject_add_internal failed for mac80211_hwsim with -EEXIST, don't try to register things with the same name in the same directory.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
cebf8fd16900fdfd58c0028617944f808f97fe50 to < 8d389e363075c2e1deb84a560686ea92123e4b8baffectedcebf8fd16900fdfd58c0028617944f808f97fe50 to < d1dbff10c6cd3b43457f3efd3c9c4950009635bfaffectedcebf8fd16900fdfd58c0028617944f808f97fe50 to < f39d21154db87545d8f0b25d13c326f37cc32239affectedcebf8fd16900fdfd58c0028617944f808f97fe50 to < 6977b1a5d67097eaa4d02b0c126c04cc6e8917c0affectede7f6e3c9db4b6f259c89fd05728d024ab32acd71affecteda93a63333dbdb182b87e8cc99df8b4474f867acbaffected37de955c11b59050346e530143c20b10b4846527affected645897231f960590220144b06d1f994b7eb88326affected3.10.105 to < 3.11affected3.12.70 to < 3.13affected4.4.40 to < 4.5affected4.8.16 to < 4.9affected
Linux Linux
Default version status: affected
4.9affected0 to < 4.9unaffected5.15.99 to ≤ 5.15.*unaffected6.1.16 to ≤ 6.1.*unaffected6.2.3 to ≤ 6.2.*unaffected6.3 to ≤ *unaffected