Description
In the Linux kernel, the following vulnerability has been resolved: ASoC: meson: Keep link pointers valid on realloc failure meson_card_reallocate_links() grows the DAI link and private data arrays with two consecutive krealloc() calls and updates the owner pointers only after both calls have succeeded. A successful krealloc() may move the data: it frees the old block and returns a new one. When that happens for the link array and the second krealloc() then fails, card->dai_link still points to the block that krealloc() already freed, and the error path frees the new block too. The probe error path then calls meson_card_clean_references(), which dereferences card->dai_link and kfree()s it again, resulting in a use-after-free and a double free. Commit card->dai_link and card->num_links right after the first krealloc() succeeds, so the pointer always refers to a valid allocation that meson_card_clean_references() can walk and free. krealloc() with __GFP_ZERO zero-initializes the added entries, so walking them on the error path is safe. With both failure paths reduced to a plain return, drop the goto labels and the error message.
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
7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < de33afc57f24538186bccf4c4f6c65dd38634fd8affected7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < 1c1485343b7c1c39dab7ecb9cd16ba49fd0ce642affected7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < 8db0a0fc84e80aa9924e0833aef6cc95df94e5a7affected7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < 41e92e0caa1fe3df2efaca346bfcaeb7fb9826abaffected7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < 0b30fbe6bf7cf6499b19dd886f466e7c9e820089affected7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < 8fec16898f184e5f8f8fdd09ff1ced2bd7ffc13daffected7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < 5ed1b048527bebe4529eb6e01c34dcc5d97ba5feaffected7864a79f37b55769b817d5e6c5ae0ca4bfdba93b to < 2aaa41cf974f83a6fb105422bac4e2f107150774affected
Linux Linux
Default version status: affected
4.19affected0 to < 4.19unaffected5.10.270 to ≤ 5.10.*unaffected5.15.221 to ≤ 5.15.*unaffected6.1.188 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/de33afc57f24538186bccf4c4f6c65dd38634fd8 ↗
- https://git.kernel.org/stable/c/1c1485343b7c1c39dab7ecb9cd16ba49fd0ce642 ↗
- https://git.kernel.org/stable/c/8db0a0fc84e80aa9924e0833aef6cc95df94e5a7 ↗
- https://git.kernel.org/stable/c/41e92e0caa1fe3df2efaca346bfcaeb7fb9826ab ↗
- https://git.kernel.org/stable/c/0b30fbe6bf7cf6499b19dd886f466e7c9e820089 ↗
- https://git.kernel.org/stable/c/8fec16898f184e5f8f8fdd09ff1ced2bd7ffc13d ↗
- https://git.kernel.org/stable/c/5ed1b048527bebe4529eb6e01c34dcc5d97ba5fe ↗
- https://git.kernel.org/stable/c/2aaa41cf974f83a6fb105422bac4e2f107150774 ↗