Description
In the Linux kernel, the following vulnerability has been resolved: md-cluster: fix NULL pointer dereference in process_metadata_update The function process_metadata_update() blindly dereferences the 'thread' pointer (acquired via rcu_dereference_protected) within the wait_event() macro. While the code comment states "daemon thread must exist", there is a valid race condition window during the MD array startup sequence (md_run): 1. bitmap_load() is called, which invokes md_cluster_ops->join(). 2. join() starts the "cluster_recv" thread (recv_daemon). 3. At this point, recv_daemon is active and processing messages. 4. However, mddev->thread (the main MD thread) is not initialized until later in md_run(). If a METADATA_UPDATED message is received from a remote node during this specific window, process_metadata_update() will be called while mddev->thread is still NULL, leading to a kernel panic. To fix this, we must validate the 'thread' pointer. If it is NULL, we release the held lock (no_new_dev_lockres) and return early, safely ignoring the update request as the array is not yet fully ready to process it.
Product status
0ba959774e93911caff596de6391f085fb640ac4 (git) before a61c1bc84c4a0f1e7c2fe55b0f43d7d94af4adf1
0ba959774e93911caff596de6391f085fb640ac4 (git) before dec123825c1ed74d98fd5fc7571a851dea4f46ff
0ba959774e93911caff596de6391f085fb640ac4 (git) before 721599e837d3f4c0e6cc14da059612c017b6d3ec
0ba959774e93911caff596de6391f085fb640ac4 (git) before dceb5a843910004cb118148e267036104fc3ee43
0ba959774e93911caff596de6391f085fb640ac4 (git) before f150e753cb8dd756085f46e86f2c35ce472e0a3c
4.12
Any version before 4.12
6.6.128 (semver)
6.12.75 (semver)
6.18.16 (semver)
6.19.6 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/a61c1bc84c4a0f1e7c2fe55b0f43d7d94af4adf1
git.kernel.org/...c/dec123825c1ed74d98fd5fc7571a851dea4f46ff
git.kernel.org/...c/721599e837d3f4c0e6cc14da059612c017b6d3ec
git.kernel.org/...c/dceb5a843910004cb118148e267036104fc3ee43
git.kernel.org/...c/f150e753cb8dd756085f46e86f2c35ce472e0a3c