Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved:
media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
Syzbot reports a memory leak in “dvb_usb_adapter_init()”. The leak is due to not accounting for and freeing current iteration’s adapter->priv in case of an error. Currently if an error occurs, it will exit before incrementing “num_adapters_initalized”, which is used as a reference counter to free all adap->priv in “dvb_usb_adapter_exit()”. There are multiple error paths that can exit from before incrementing the counter. Including the error handling paths for “dvb_usb_adapter_stream_init()”, “dvb_usb_adapter_dvb_init()” and “dvb_usb_adapter_frontend_init()” within “dvb_usb_adapter_init()”.
This means that in case of an error in any of these functions the current iteration is not accounted for and the current iteration’s adap->priv is not freed.
Fix this by freeing the current iteration’s adap->priv in the “stream_init_err:” label in the error path. The rest of the (accounted for) adap->priv objects are freed in dvb_usb_adapter_exit() as expected using the num_adapters_initalized variable.
Syzbot report:
BUG: memory leak
unreferenced object 0xffff8881172f1a00 (size 512):
comm “kworker/0:2”, pid 139, jiffies 4294994873 (age 10.960s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
backtrace:
[
Details
- Affected product:
- AlmaLinux 9.2 ESU , CentOS 8.4 ELS , CentOS 8.5 ELS , CentOS Stream 8 ELS , TuxCare 9.6 ESU
- Affected packages:
- kernel @ 4.18.0 (+4 more)
In the Linux kernel, the following vulnerability has been resolved:
media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
Syzbot reports a memory leak in “dvb_usb_adapter_init()”. The leak is due to not accounting for and freeing current iteration’s adapter->priv in case of an error. Currently if an error occurs, it will exit before incrementing “num_adapters_initalized”, which is used as a reference counter to free all adap->priv in “dvb_usb_adapter_exit()”. There are multiple error paths that can exit from before incrementing the counter. Including the error handling paths for “dvb_usb_adapter_stream_init()”, “dvb_usb_adapter_dvb_init()” and “dvb_usb_adapter_frontend_init()” within “dvb_usb_adapter_init()”.
This means that in case of an error in any of these functions the current iteration is not accounted for and the current iteration’s adap->priv is not freed.
Fix this by freeing the current iteration’s adap->priv in the “stream_init_err:” label in the error path. The rest of the (accounted for) adap->priv objects are freed in dvb_usb_adapter_exit() as expected using the num_adapters_initalized variable.
Syzbot report:
BUG: memory leak
unreferenced object 0xffff8881172f1a00 (size 512):
comm “kworker/0:2”, pid 139, jiffies 4294994873 (age 10.960s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
backtrace:
[