In the Linux kernel, the following vulnerability has been resolved:
chardev: fix error handling in cdevdeviceadd()
While doing fault injection test, I got the following report:
------------[ cut here ]------------ kobject: '(null)' (0000000039956980): is not initialized, yet kobjectput() is being called. WARNING: CPU: 3 PID: 6306 at kobjectput+0x23d/0x4e0 CPU: 3 PID: 6306 Comm: 283 Tainted: G W 6.1.0-rc2-00005-g307c1086d7c9 #1253 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014 RIP: 0010:kobjectput+0x23d/0x4e0 Call Trace: <TASK> cdevdeviceadd+0x15e/0x1b0 _iiodeviceregister+0x13b4/0x1af0 [industrialio] _devmiiodeviceregister+0x22/0x90 [industrialio] max517probe+0x3d8/0x6b4 [max517] i2cdevice_probe+0xa81/0xc00
When deviceadd() is injected fault and returns error, if dev->devt is not set, cdevadd() is not called, cdev_del() is not needed. Fix this by checking dev->devt in error path.