mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
net/rds: Initialize ic->i_fastreg_wrs upon allocation
Otherwise, if an IB connection is torn down before "rds_ib_setup_qp" is called, the value of "ic->i_fastreg_wrs" is still at zero (as it wasn't initialized by "rds_ib_setup_qp"). Consequently "rds_ib_conn_path_shutdown" will spin forever, waiting for it to go back to "RDS_IB_DEFAULT_FR_WR", which of course will never happen as there are no outstanding work requests. Signed-off-by: Gerd Rausch <gerd.rausch@oracle.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3a2886cca7
commit
aa4948937b
1 changed files with 1 additions and 1 deletions
|
@ -527,7 +527,6 @@ static int rds_ib_setup_qp(struct rds_connection *conn)
|
||||||
attr.qp_type = IB_QPT_RC;
|
attr.qp_type = IB_QPT_RC;
|
||||||
attr.send_cq = ic->i_send_cq;
|
attr.send_cq = ic->i_send_cq;
|
||||||
attr.recv_cq = ic->i_recv_cq;
|
attr.recv_cq = ic->i_recv_cq;
|
||||||
atomic_set(&ic->i_fastreg_wrs, RDS_IB_DEFAULT_FR_WR);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX this can fail if max_*_wr is too large? Are we supposed
|
* XXX this can fail if max_*_wr is too large? Are we supposed
|
||||||
|
@ -1139,6 +1138,7 @@ int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
|
||||||
spin_lock_init(&ic->i_ack_lock);
|
spin_lock_init(&ic->i_ack_lock);
|
||||||
#endif
|
#endif
|
||||||
atomic_set(&ic->i_signaled_sends, 0);
|
atomic_set(&ic->i_signaled_sends, 0);
|
||||||
|
atomic_set(&ic->i_fastreg_wrs, RDS_IB_DEFAULT_FR_WR);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rds_ib_conn_shutdown() waits for these to be emptied so they
|
* rds_ib_conn_shutdown() waits for these to be emptied so they
|
||||||
|
|
Loading…
Reference in a new issue