On Fri, Apr 8, 2022 at 1:47 AM Xiaomeng Tong <xiam0nd.tong@xxxxxxxxx> wrote: > > The bug is here: > if (!rdev || rdev->desc_nr != nr) { > > The list iterator value 'rdev' will *always* be set and non-NULL > by rdev_for_each_rcu(), so it is incorrect to assume that the > iterator value will be NULL if the list is empty or no element > found (In fact, it will be a bogus pointer to an invalid struct > object containing the HEAD). Otherwise it will bypass the check > and lead to invalid memory access passing the check. > > To fix the bug, use a new variable 'iter' as the list iterator, > while using the original variable 'pdev' as a dedicated pointer to > point to the found element. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 70bcecdb1534 ("md-cluster: Improve md_reload_sb to be less error prone") > Signed-off-by: Xiaomeng Tong <xiam0nd.tong@xxxxxxxxx> Applied to md-next. Thanks!