On Thu, Apr 20, 2023 at 06:15:16AM +0000, Tian, Kevin wrote:
which internal list? group has a list for attached devices but regarding to hwpt it's stored in a single field igroup->hwpt.
It is added to
list_add_tail(&hwpt->hwpt_item, &hwpt->ioas->hwpt_list);
this is called under ioas->mutex.
Yes.. But.. that is troubled too, we are calling destroy under the same mutex, there is a missing a fault point to catch it in the test, and hwpt_alloc doesn't have the lock wide enough :\
So you want to argue that it is safe to do this:
mutex_lock(&ioas->mutex); alloc attach detach abort mutex_unlock(&ioas->mutex);
Even if attach/detach lock/unlock the group mutex during their cycle?
It seems OK..
I don't see any places that Though I don't much like the locking pattern where we succeed attach, drop all the locks and the fail and then relock and do error unwind.. Sketchy..
Jason