Message ID | 20190614004450.20252-11-jgg@ziepe.ca (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mm/hmm: Various revisions from a locking/code review | expand |
On Thu, Jun 13, 2019 at 09:44:48PM -0300, Jason Gunthorpe wrote: > range->hmm = hmm; > kref_get(&hmm->kref); > - list_add_rcu(&range->list, &hmm->ranges); > + list_add(&range->list, &hmm->ranges); > > /* > * If there are any concurrent notifiers we have to wait for them for > @@ -934,7 +934,7 @@ void hmm_range_unregister(struct hmm_range *range) > struct hmm *hmm = range->hmm; > > mutex_lock(&hmm->lock); > - list_del_rcu(&range->list); > + list_del(&range->list); > mutex_unlock(&hmm->lock); Looks fine: Signed-off-by: Christoph Hellwig <hch@lst.de> Btw, is there any reason new ranges are added to the front and not the tail of the list?
On Sat, Jun 15, 2019 at 07:18:26AM -0700, Christoph Hellwig wrote: > On Thu, Jun 13, 2019 at 09:44:48PM -0300, Jason Gunthorpe wrote: > > range->hmm = hmm; > > kref_get(&hmm->kref); > > - list_add_rcu(&range->list, &hmm->ranges); > > + list_add(&range->list, &hmm->ranges); > > > > /* > > * If there are any concurrent notifiers we have to wait for them for > > @@ -934,7 +934,7 @@ void hmm_range_unregister(struct hmm_range *range) > > struct hmm *hmm = range->hmm; > > > > mutex_lock(&hmm->lock); > > - list_del_rcu(&range->list); > > + list_del(&range->list); > > mutex_unlock(&hmm->lock); > > Looks fine: > > Signed-off-by: Christoph Hellwig <hch@lst.de> > > Btw, is there any reason new ranges are added to the front and not the > tail of the list? Couldn't find one. I think order on this list doesn't matter. Jason
diff --git a/mm/hmm.c b/mm/hmm.c index e214668cba3474..26af511cbdd075 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -908,7 +908,7 @@ int hmm_range_register(struct hmm_range *range, range->hmm = hmm; kref_get(&hmm->kref); - list_add_rcu(&range->list, &hmm->ranges); + list_add(&range->list, &hmm->ranges); /* * If there are any concurrent notifiers we have to wait for them for @@ -934,7 +934,7 @@ void hmm_range_unregister(struct hmm_range *range) struct hmm *hmm = range->hmm; mutex_lock(&hmm->lock); - list_del_rcu(&range->list); + list_del(&range->list); mutex_unlock(&hmm->lock); /* Drop reference taken by hmm_range_register() */