aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/controller/pci-host-common.c
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <[email protected]>2019-07-04 03:21:25 +0000
committerDan Williams <[email protected]>2019-07-17 02:30:59 +0000
commit23c84eb7837514e16d79ed6d849b13745e0ce688 (patch)
tree001b98406a81d04bb1327949a46a42a71b6c5eb2 /drivers/pci/controller/pci-host-common.c
parentdevice-dax: Add a 'resource' attribute (diff)
downloadkernel-23c84eb7837514e16d79ed6d849b13745e0ce688.tar.gz
kernel-23c84eb7837514e16d79ed6d849b13745e0ce688.zip
dax: Fix missed wakeup with PMD faults
RocksDB can hang indefinitely when using a DAX file. This is due to a bug in the XArray conversion when handling a PMD fault and finding a PTE entry. We use the wrong index in the hash and end up waiting on the wrong waitqueue. There's actually no need to wait; if we find a PTE entry while looking for a PMD entry, we can return immediately as we know we should fall back to a PTE fault (which may not conflict with the lock held). We reuse the XA_RETRY_ENTRY to signal a conflicting entry was found. This value can never be found in an XArray while holding its lock, so it does not create an ambiguity. Cc: <[email protected]> Link: http://lkml.kernel.org/r/CAPcyv4hwHpX-MkUEqxwdTj7wCCZCN4RV-L4jsnuwLGyL_UEG4A@mail.gmail.com Fixes: b15cd800682f ("dax: Convert page fault handlers to XArray") Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Tested-by: Dan Williams <[email protected]> Reported-by: Robert Barror <[email protected]> Reported-by: Seema Pandit <[email protected]> Reviewed-by: Jan Kara <[email protected]> Signed-off-by: Dan Williams <[email protected]>
Diffstat (limited to 'drivers/pci/controller/pci-host-common.c')
0 files changed, 0 insertions, 0 deletions