Merge tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-block.git] / mm / mmu_notifier.c
index 9c884abc785089d596b13a1edf7520ef0ee4123d..ee36068077b6e54b5c94287dafec00a18e88ff75 100644 (file)
@@ -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);