linux/include/rdma
Roland Dreier 1bf66a3042 IB: Put rlimit accounting struct in struct ib_umem
When memory pinned with ib_umem_get() is released, ib_umem_release()
needs to subtract the amount of memory being unpinned from
mm->locked_vm.  However, ib_umem_release() may be called with
mm->mmap_sem already held for writing if the memory is being released
as part of an munmap() call, so it is sometimes necessary to defer
this accounting into a workqueue.

However, the work struct used to defer this accounting is dynamically
allocated before it is queued, so there is the possibility of failing
that allocation.  If the allocation fails, then ib_umem_release has no
choice except to bail out and leave the process with a permanently
elevated locked_vm.

Fix this by allocating the structure to defer accounting as part of
the original struct ib_umem, so there's no possibility of failing a
later allocation if creating the struct ib_umem and pinning memory
succeeds.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
2007-05-08 18:00:37 -07:00
..
Kbuild [HEADERS] One line per header in Kbuild files to reduce conflicts 2006-09-19 12:43:58 +01:00
ib_addr.h IB/sa: Track multicast join/leave requests 2007-02-16 14:20:02 -08:00
ib_cache.h
ib_cm.h IB/cm: Fix automatic path migration support 2006-11-29 15:33:10 -08:00
ib_fmr_pool.h [PATCH] fmr pool: remove unnecessary pointer dereference 2006-07-14 21:53:51 -07:00
ib_mad.h PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
ib_marshall.h RDMA/cma: Export rdma cm interface to userspace 2006-12-12 11:50:22 -08:00
ib_pack.h
ib_sa.h IB/sa: Track multicast join/leave requests 2007-02-16 14:20:02 -08:00
ib_smi.h IB: Move struct port_info from ipath to <rdma/ib_smi.h> 2006-06-17 20:37:36 -07:00
ib_umem.h IB: Put rlimit accounting struct in struct ib_umem 2007-05-08 18:00:37 -07:00
ib_user_cm.h IB/cm: Fix automatic path migration support 2006-11-29 15:33:10 -08:00
ib_user_mad.h IB: Make sure struct ib_user_mad.data is aligned 2007-02-04 14:11:56 -08:00
ib_user_sa.h
ib_user_verbs.h IB/uverbs: Return sq_draining value in query_qp response 2006-10-30 21:19:35 -08:00
ib_verbs.h IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules 2007-05-08 18:00:37 -07:00
iw_cm.h RDMA: iWARP Connection Manager. 2006-09-22 15:22:46 -07:00
rdma_cm.h RDMA/cma: Add multicast communication support 2007-02-16 14:29:07 -08:00
rdma_cm_ib.h RDMA/cma: Add multicast communication support 2007-02-16 14:29:07 -08:00
rdma_user_cm.h RDMA/cma: Add multicast communication support 2007-02-16 14:29:07 -08:00