linux_dsm_epyc7002/drivers/infiniband/hw/qib
Jan Kara 603e772992 IB/qib: Convert qib_user_sdma_pin_pages() to use get_user_pages_fast()
qib_user_sdma_queue_pkts() gets called with mmap_sem held for
writing. Except for get_user_pages() deep down in
qib_user_sdma_pin_pages() we don't seem to need mmap_sem at all.  Even
more interestingly the function qib_user_sdma_queue_pkts() (and also
qib_user_sdma_coalesce() called somewhat later) call copy_from_user()
which can hit a page fault and we deadlock on trying to get mmap_sem
when handling that fault.

So just make qib_user_sdma_pin_pages() use get_user_pages_fast() and
leave mmap_sem locking for mm.

This deadlock has actually been observed in the wild when the node
is under memory pressure.

Cc: <stable@vger.kernel.org>
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2013-11-08 14:43:11 -08:00
..
Kconfig Remove GENERIC_HARDIRQ config option 2013-09-13 15:09:52 +02:00
Makefile IB/qib: Convert opcode counters to per-context 2013-06-21 17:19:50 -07:00
qib_6120_regs.h
qib_7220_regs.h
qib_7220.h IB/qib: Eliminate 64-bit jiffies use 2012-01-03 20:52:12 -08:00
qib_7322_regs.h IB/qib: Mask hardware error during link reset 2010-07-06 14:13:20 -07:00
qib_common.h IB/qib: Improve SDMA performance 2013-08-13 11:14:34 -07:00
qib_cq.c IB/qib: Optimize CQ callbacks 2013-06-21 17:19:49 -07:00
qib_debugfs.c IB/qib: Add qp_stats debug file 2013-06-21 17:19:52 -07:00
qib_debugfs.h IB/qib: Convert opcode counters to per-context 2013-06-21 17:19:50 -07:00
qib_diag.c IB/qib: checkpatch fixes 2012-07-19 11:20:04 -07:00
qib_dma.c
qib_driver.c IB/qib: Convert opcode counters to per-context 2013-06-21 17:19:50 -07:00
qib_eeprom.c IB/qib: checkpatch fixes 2012-07-19 11:20:04 -07:00
qib_file_ops.c IB/qib: Improve SDMA performance 2013-08-13 11:14:34 -07:00
qib_fs.c fs: Limit sys_mount to only request filesystem modules. 2013-03-03 19:36:31 -08:00
qib_iba6120.c IB/qib: Add DCA support 2013-06-21 17:19:38 -07:00
qib_iba7220.c IB/qib: Add DCA support 2013-06-21 17:19:38 -07:00
qib_iba7322.c IB/qib: Add err_decode() call for ring dump 2013-07-30 10:13:00 -07:00
qib_init.c IB/qib: Make qib_driver static 2013-08-13 11:14:51 -07:00
qib_intr.c IB/qib: checkpatch fixes 2012-07-19 11:20:04 -07:00
qib_keys.c IB/qib: Fix lockdep splat in qib_alloc_lkey() 2013-06-04 17:05:20 -07:00
qib_mad.c IB/qib: Fix failure of compliance test C14-024#06_LocalPortNum 2012-09-14 10:42:32 -07:00
qib_mad.h IB/qib: Move COUNTER_MASK definition within qib_mad.h header guards 2013-09-02 21:22:20 -07:00
qib_mmap.c
qib_mr.c IB/qib: RCU locking for MR validation 2012-07-08 18:05:19 -07:00
qib_pcie.c IB/qib: Clean up unnecessary MSI/MSI-X capability find 2013-08-13 11:17:23 -07:00
qib_pio_copy.c
qib_qp.c IB/qib: Add qp_stats debug file 2013-06-21 17:19:52 -07:00
qib_qsfp.c IB/qib: Fix over-scheduling of QSFP work 2011-11-28 12:17:33 -08:00
qib_qsfp.h IB/qib: Eliminate 64-bit jiffies use 2012-01-03 20:52:12 -08:00
qib_rc.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_ruc.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_sd7220.c firmware,IB/qib: revert firmware file move 2013-04-05 12:19:39 -07:00
qib_sdma.c IB/qib: Improve SDMA performance 2013-08-13 11:14:34 -07:00
qib_srq.c RDMA/core: Add SRQ type field 2011-10-13 09:13:26 -07:00
qib_sysfs.c IB/qib: Correct qib_verbs_register_sysfs() error handling 2013-04-16 23:04:36 -07:00
qib_twsi.c IB/qib: checkpatch fixes 2012-07-19 11:20:04 -07:00
qib_tx.c IB/qib: Optimize pio ack buffer allocation 2012-05-14 12:37:03 -07:00
qib_uc.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_ud.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_user_pages.c mm: distinguish between mlocked and pinned pages 2011-10-31 17:30:46 -07:00
qib_user_sdma.c IB/qib: Convert qib_user_sdma_pin_pages() to use get_user_pages_fast() 2013-11-08 14:43:11 -08:00
qib_user_sdma.h
qib_verbs_mcast.c
qib_verbs.c IB/qib: Convert opcode counters to per-context 2013-06-21 17:19:50 -07:00
qib_verbs.h IB/qib: Add qp_stats debug file 2013-06-21 17:19:52 -07:00
qib_wc_ppc64.c
qib_wc_x86_64.c IB/qib: checkpatch fixes 2012-07-19 11:20:04 -07:00
qib.h IB/qib: Make qib_driver static 2013-08-13 11:14:51 -07:00