On Thu, 7 Apr 2022 17:37:55 -0700, Song Liu wrote: > On Mon, Mar 28, 2022 at 1:06 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 ("amd-cluster: Improve md_reload_sb to be less error prone") > > s/amd-cluster/md-cluster/ Have fixed it in PATCH v3, please check it. Thank you. -- Xiaomeng Tong