OpenCloudOS-Kernel/drivers/infiniband/core
Roland Dreier f47e22c6e4 IB/fmr: ib_flush_fmr_pool() may wait too long
ib_flush_fmr_pool() stashes away the request generation number
properly, but then goes ahead and rereads it every time it tests
whether the flush generation number has caught up.  This means that
there is a theoretical possibility of livelock, if the request
generation number keeps getting bumped and the flush generation number
never catches up.  The fix is simple: use the request generation
number read at the beginning of the function.

Also, atomic_inc() followed by atomic_read() can be replaced with
atomic_int_return().  There's no real requirement for atomicity here
but we might as well shrink the code.

This bug was discovered using David Binderman's list of "set but never
used" warnings from icc.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
2006-12-12 11:50:19 -08:00
..
Makefile RDMA: iWARP Core Changes. 2006-09-22 15:22:47 -07:00
addr.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
agent.c IB/mad: Simplify SMI by eliminating smi_check_local_dr_smp() 2006-03-20 10:08:11 -08:00
agent.h [PATCH] missing include in infiniband 2005-10-29 10:35:07 -07:00
cache.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
cm.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
cm_msgs.h [IB] cm: Add missing break in switch 2005-10-20 12:29:36 -07:00
cma.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
core_priv.h [PATCH] IB: move include files to include/rdma 2005-08-26 20:37:38 -07:00
device.c IB: Fix typo in kerneldoc for ib_set_client_data() 2006-09-22 15:22:58 -07:00
fmr_pool.c IB/fmr: ib_flush_fmr_pool() may wait too long 2006-12-12 11:50:19 -08:00
iwcm.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
iwcm.h RDMA: iWARP Connection Manager. 2006-09-22 15:22:46 -07:00
mad.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-12-05 14:37:56 +00:00
mad_priv.h WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
mad_rmpp.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
mad_rmpp.h [IB] Fix MAD layer DMA mappings to avoid touching data buffer once mapped 2005-10-25 10:51:39 -07:00
packer.c [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
sa_query.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
smi.c RDMA: iWARP Core Changes. 2006-09-22 15:22:47 -07:00
smi.h IB/mad: Simplify SMI by eliminating smi_check_local_dr_smp() 2006-03-20 10:08:11 -08:00
sysfs.c RDMA: iWARP Core Changes. 2006-09-22 15:22:47 -07:00
ucm.c IB/ucm: Fix deadlock in cleanup 2006-11-29 15:33:10 -08:00
ud_header.c [PATCH] fix remaining missing includes 2005-11-07 07:53:41 -08:00
user_mad.c RDMA: iWARP Core Changes. 2006-09-22 15:22:47 -07:00
uverbs.h IB/uverbs: Avoid a crash on device hot remove 2006-08-03 10:56:42 -07:00
uverbs_cmd.c IB/uverbs: Return sq_draining value in query_qp response 2006-10-30 21:19:35 -08:00
uverbs_main.c [PATCH] struct path: convert infiniband 2006-12-08 08:28:46 -08:00
uverbs_marshall.c IB: common handling for marshalling parameters to/from userspace 2006-06-17 20:37:27 -07:00
uverbs_mem.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
verbs.c RDMA: iWARP Core Changes. 2006-09-22 15:22:47 -07:00