Description
In the Linux kernel, the following vulnerability has been resolved: media: v4l2-fwnode: Fix subdev owner overwritten in v4l2_async_register_subdev_sensor() The v4l2 helper v4l2_async_register_subdev_sensor() calls v4l2_async_register_subdev(), which is a macro that expands to __v4l2_async_register_subdev(sd,THIS_MODULE). Since the macro is expanded inside v4l2-fwnode.c, THIS_MODULE resolves to the v4l2-fwnode module rather than the sensor driver module that originally set sd->owner. When v4l2-fwnode is built-in, THIS_MODULE evaluates to NULL, which then overwrites the sensor driver's owner with NULL. This causes the problem that the sensor module's reference count is never incremented during async registration, so the module can be removed while the subdevice is still in use by a notifier (e.g., a CSI-2 receiver bridge driver). Fix this by renaming v4l2_async_register_subdev_sensor() to __v4l2_async_register_subdev_sensor() with an added explicit module argument and introducing a wrapper macro: #define v4l2_async_register_subdev_sensor(sd) \ __v4l2_async_register_subdev_sensor(sd, THIS_MODULE) This ensures the sensor driver module is properly referenced even when the sensor driver does not init the owner field before calling v4l2_async_register_subdev_sensor() and prevents premature module removal.
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
aef69d54755d45edefbf347a51efd1673d7daed9 to < f35e85a9d919d7954d9a7752e4644c0b403ad025affectedaef69d54755d45edefbf347a51efd1673d7daed9 to < c5e47cf9a6cffef73a1ed40b3648e6097aac165aaffectedaef69d54755d45edefbf347a51efd1673d7daed9 to < 47ef04cd13d38010b580056a9d8840aaab944841affectedaef69d54755d45edefbf347a51efd1673d7daed9 to < caea6bc68c925d63ca33d21b2255f47181943d61affectedaef69d54755d45edefbf347a51efd1673d7daed9 to < cf9732fd6c4f2f803ccfc46d89489b6635590270affectedaef69d54755d45edefbf347a51efd1673d7daed9 to < 067887ff93fddbb3a3fb84c900bc654ecfe5ba61affectedaef69d54755d45edefbf347a51efd1673d7daed9 to < 06cb687a5132fcffe624c0070576ab852ac6b568affected
Linux Linux
Default version status: affected
4.15affected0 to < 4.15unaffected5.10.266 to ≤ 5.10.*unaffected5.15.217 to ≤ 5.15.*unaffected6.6.151 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/f35e85a9d919d7954d9a7752e4644c0b403ad025 ↗
- https://git.kernel.org/stable/c/c5e47cf9a6cffef73a1ed40b3648e6097aac165a ↗
- https://git.kernel.org/stable/c/47ef04cd13d38010b580056a9d8840aaab944841 ↗
- https://git.kernel.org/stable/c/caea6bc68c925d63ca33d21b2255f47181943d61 ↗
- https://git.kernel.org/stable/c/cf9732fd6c4f2f803ccfc46d89489b6635590270 ↗
- https://git.kernel.org/stable/c/067887ff93fddbb3a3fb84c900bc654ecfe5ba61 ↗
- https://git.kernel.org/stable/c/06cb687a5132fcffe624c0070576ab852ac6b568 ↗