On Thu, Mar 31, 2022 at 11:26:22AM -0400, 'Wenchao Hao' via syzkaller-bugs wrote: > I do not think it's necessary to call device_del() on this path. If the device > has been added, put_device() would delete it from sysfs. So the origin error > handle is ok with me. > No. The original is buggy and it was detected at runtime by syzbot. It's not static analysis, it is an actual bug found in testing. The device_put() unwinds device_initialize(). The device_del() unwinds device_add(). Take a look at the comments to device_add() or take a look at how device_register/unregister() work. The temptation was to call device_unregister() which is a combined device_del(); device_put(); but when the device_initialize() and device_add() are called separately, then I think it is more readable to call del and put separately as well. regards, dan carpenter