diff options
Diffstat (limited to 'mm/mmu_notifier.c')
| -rw-r--r-- | mm/mmu_notifier.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c index 9c884abc7850..ee36068077b6 100644 --- a/mm/mmu_notifier.c +++ b/mm/mmu_notifier.c @@ -180,7 +180,7 @@ int __mmu_notifier_invalidate_range_start(struct mmu_notifier_range *range)  			if (_ret) {  				pr_info("%pS callback failed with %d in %sblockable context.\n",  					mn->ops->invalidate_range_start, _ret, -					!range->blockable ? "non-" : ""); +					!mmu_notifier_range_blockable(range) ? "non-" : "");  				ret = _ret;  			}  		} @@ -395,3 +395,13 @@ void mmu_notifier_unregister_no_release(struct mmu_notifier *mn,  	mmdrop(mm);  }  EXPORT_SYMBOL_GPL(mmu_notifier_unregister_no_release); + +bool +mmu_notifier_range_update_to_read_only(const struct mmu_notifier_range *range) +{ +	if (!range->vma || range->event != MMU_NOTIFY_PROTECTION_VMA) +		return false; +	/* Return true if the vma still have the read flag set. */ +	return range->vma->vm_flags & VM_READ; +} +EXPORT_SYMBOL_GPL(mmu_notifier_range_update_to_read_only);  |