--- a/mm/mprotect.c~mm-optimizing-error-condition-detection-in-do_mprotect_pkey +++ a/mm/mprotect.c @@ -617,10 +617,11 @@ static int do_mprotect_pkey(unsigned lon if (tmp > end) tmp = end; - if (vma->vm_ops && vma->vm_ops->mprotect) + if (vma->vm_ops && vma->vm_ops->mprotect) { error = vma->vm_ops->mprotect(vma, nstart, tmp, newflags); - if (error) - goto out; + if (error) + goto out; + } error = mprotect_fixup(vma, &prev, nstart, tmp, newflags); if (error)