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 19795eb35579bae72617377b07e91abbabff30e4..94036d92ed163662260948e3c5a85c5df6908ca6 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);