Description
In the Linux kernel, the following vulnerability has been resolved: crash_dump: release keyring reference at the correct time restore_dm_crypt_keys_to_thread_keyring() gets a reference to the user keyring before restoring the saved dm-crypt keys. The same keyring reference is then passed to add_key_to_keyring() for each saved key, but add_key_to_keyring() drops that reference on every call. This is only balanced when exactly one key is restored. With multiple keys, the keyring reference is dropped too many times and may trigger a refcount underflow or use-after-free. When more than five keys are restored, a refcount underflow/use-after-free warning can be triggered. The early error paths after lookup_user_key() also return without dropping the keyring reference. Keep ownership of the keyring reference in restore_dm_crypt_keys_to_thread_keyring(), drop it once on all exit paths, and make add_key_to_keyring() only use the reference without consuming it.
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
62f17d9df6924cf805de5ae970470615c1c8d9f2 to < b0f7343a002f9c8b8378011f60482c76f3216dfdaffected62f17d9df6924cf805de5ae970470615c1c8d9f2 to < ed566979f99c5516cad45a76ae25e2a4928ffb67affected62f17d9df6924cf805de5ae970470615c1c8d9f2 to < ada2e5a44e99113e08ad9b7b71396c6c572204daaffected
Linux Linux
Default version status: affected
6.16affected0 to < 6.16unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected