Description
In the Linux kernel, the following vulnerability has been resolved: media: solo6x10: Check for out of bounds chip_id Clang with CONFIG_UBSAN_SHIFT=y noticed a condition where a signed type (literal "1" is an "int") could end up being shifted beyond 32 bits, so instrumentation was added (and due to the double is_tw286x() call seen via inlining), Clang decides the second one must now be undefined behavior and elides the rest of the function[1]. This is a known problem with Clang (that is still being worked on), but we can avoid the entire problem by actually checking the existing max chip ID, and now there is no runtime instrumentation added at all since everything is known to be within bounds. Additionally use an unsigned value for the shift to remove the instrumentation even without the explicit bounds checking. [hverkuil: fix checkpatch warning for is_tw286x]
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
faa4fd2a09517b39cc1f5d622453f97a59acfdac to < c327192ca26670cf6e588c1eeda66cd2fa97630eaffectedfaa4fd2a09517b39cc1f5d622453f97a59acfdac to < 0b3dadada2417782a63ce32dae05bafe1c949e3faffectedfaa4fd2a09517b39cc1f5d622453f97a59acfdac to < 603e3859393ee2ce91393b7d05e6e56e4b66e5cdaffectedfaa4fd2a09517b39cc1f5d622453f97a59acfdac to < 33af366211ee78e3b074ff44a16121e537e86826affectedfaa4fd2a09517b39cc1f5d622453f97a59acfdac to < 5849ae68d7b8b6ad55cc1bf0d227dd2ae6362528affectedfaa4fd2a09517b39cc1f5d622453f97a59acfdac to < d29f33b2cf98e4901cd5457d1ee34062e808df73affectedfaa4fd2a09517b39cc1f5d622453f97a59acfdac to < 4d6db0c6bbbfd8d7bbdbf7ab6a9c003752abf116affectedfaa4fd2a09517b39cc1f5d622453f97a59acfdac to < 0fdf6323c35a134f206dcad5babb4ff488552076affected
Linux Linux
Default version status: affected
2.6.36affected0 to < 2.6.36unaffected5.10.252 to ≤ 5.10.*unaffected5.15.202 to ≤ 5.15.*unaffected6.1.165 to ≤ 6.1.*unaffected6.6.128 to ≤ 6.6.*unaffected6.12.75 to ≤ 6.12.*unaffected6.18.16 to ≤ 6.18.*unaffected6.19.6 to ≤ 6.19.*unaffected7.0 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/c327192ca26670cf6e588c1eeda66cd2fa97630e ↗
- https://git.kernel.org/stable/c/0b3dadada2417782a63ce32dae05bafe1c949e3f ↗
- https://git.kernel.org/stable/c/603e3859393ee2ce91393b7d05e6e56e4b66e5cd ↗
- https://git.kernel.org/stable/c/33af366211ee78e3b074ff44a16121e537e86826 ↗
- https://git.kernel.org/stable/c/5849ae68d7b8b6ad55cc1bf0d227dd2ae6362528 ↗
- https://git.kernel.org/stable/c/d29f33b2cf98e4901cd5457d1ee34062e808df73 ↗
- https://git.kernel.org/stable/c/4d6db0c6bbbfd8d7bbdbf7ab6a9c003752abf116 ↗
- https://git.kernel.org/stable/c/0fdf6323c35a134f206dcad5babb4ff488552076 ↗