diff options
author | Jason Gunthorpe <jgg@mellanox.com> | 2019-08-07 01:15:41 +0200 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2019-08-16 17:02:59 +0200 |
commit | e4c057d02c9ef0b39bb88544b0c3c0a0a4d55ed6 (patch) | |
tree | b1840936690813e3898520822b8f73cf1ce8d6b7 /mm | |
parent | mm/mmu_notifiers: add a get/put scheme for the registration (diff) | |
download | linux-e4c057d02c9ef0b39bb88544b0c3c0a0a4d55ed6.tar.xz linux-e4c057d02c9ef0b39bb88544b0c3c0a0a4d55ed6.zip |
misc/sgi-gru: use mmu_notifier_get/put for struct gru_mm_struct
GRU is already using almost the same algorithm as get/put, it even
helpfully has a 10 year old comment to make this algorithm common, which
is finally happening.
There are a few differences and fixes from this conversion:
- GRU used rcu not srcu to read the hlist
- Unclear how the locking worked to prevent gru_register_mmu_notifier()
from running concurrently with gru_drop_mmu_notifier() - this version is
safe
- GRU had a release function which only set a variable without any locking
that skiped the synchronize_srcu during unregister which looks racey,
but this makes it reliable via the integrated call_srcu().
- It is unclear if the mmap_sem is actually held when
__mmu_notifier_register() was called, lockdep will now warn if this is
wrong
Link: https://lore.kernel.org/r/20190806231548.25242-5-jgg@ziepe.ca
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dimitri Sivanich <sivanich@hpe.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'mm')
0 files changed, 0 insertions, 0 deletions