In the Linux kernel, the following vulnerability has been resolved:
cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter()
If device_register() fails in cxl_register_afu|adapter(), the device is not added, device_unregister() can not be called in the error path, otherwise it will cause a null-ptr-deref because of removing not added device.
As comment of device_register() says, it should use put_device() to give up the reference in the error path. So split device_unregister() into device_del() and put_device(), then goes to put dev when register fails.
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 4.6 | 4.9.337 |
| linux / linux_kernel | 4.10 | 4.14.303 |
| linux / linux_kernel | 4.15 | 4.19.270 |
| linux / linux_kernel | 4.20 | 5.4.229 |
| linux / linux_kernel | 5.5 | 5.10.163 |
| linux / linux_kernel | 5.11 | 5.15.86 |
| linux / linux_kernel | 5.16 | 6.0.16 |
| linux / linux_kernel | 6.1 | 6.1.2 |