device-dax: fix dax_dev_huge_fault() unknown fault size handling
authorPushkar Jambhlekar <pushkar.iit@gmail.com>
Tue, 11 Apr 2017 16:12:25 +0000 (09:12 -0700)
committerDan Williams <dan.j.williams@intel.com>
Thu, 13 Apr 2017 04:59:13 +0000 (21:59 -0700)
The default case for dax_dev_huge_fault() fault size handling mistakenly
returns when it should unlock. This is not a problem in practice since
the only three possible fault sizes are handled. Going forward, if the
core mm adds a new fault size beyond pte, pmd, or pud device-dax should
abort VM_FAULT_SIGBUS requests not VM_FAULT_FALLBACK since device-dax
guarantees a configured fault granularity for all faults.

Signed-off-by: Pushkar Jambhlekar <pushkar.iit@gmail.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dax/dax.c

index 19795eb..94036d9 100644 (file)
@@ -591,7 +591,7 @@ static int dax_dev_huge_fault(struct vm_fault *vmf,
                rc = __dax_dev_pud_fault(dax_dev, vmf);
                break;
        default:
-               return VM_FAULT_FALLBACK;
+               rc = VM_FAULT_SIGBUS;
        }
        srcu_read_unlock(&dax_srcu, id);