diff options
Diffstat (limited to 'net/smc/smc_cdc.c')
| -rw-r--r-- | net/smc/smc_cdc.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/net/smc/smc_cdc.c b/net/smc/smc_cdc.c index a47e8855e045..ce468ff62a19 100644 --- a/net/smc/smc_cdc.c +++ b/net/smc/smc_cdc.c @@ -66,9 +66,13 @@ int smc_cdc_get_free_slot(struct smc_connection *conn,  	rc = smc_wr_tx_get_free_slot(link, smc_cdc_tx_handler, wr_buf,  				     wr_rdma_buf,  				     (struct smc_wr_tx_pend_priv **)pend); -	if (conn->killed) +	if (conn->killed) {  		/* abnormal termination */ +		if (!rc) +			smc_wr_tx_put_slot(link, +					   (struct smc_wr_tx_pend_priv *)pend);  		rc = -EPIPE; +	}  	return rc;  } |