net/smc: fix use of variable in cleared area
Do not use pend->idx as index for the arrays because its value is located in the cleared area. Use the existing local variable instead. Without this fix the wrong area might be cleared. Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e5f3aa04db
commit
46ad02229d
|
@ -218,10 +218,10 @@ int smc_wr_tx_put_slot(struct smc_link *link,
|
|||
u32 idx = pend->idx;
|
||||
|
||||
/* clear the full struct smc_wr_tx_pend including .priv */
|
||||
memset(&link->wr_tx_pends[pend->idx], 0,
|
||||
sizeof(link->wr_tx_pends[pend->idx]));
|
||||
memset(&link->wr_tx_bufs[pend->idx], 0,
|
||||
sizeof(link->wr_tx_bufs[pend->idx]));
|
||||
memset(&link->wr_tx_pends[idx], 0,
|
||||
sizeof(link->wr_tx_pends[idx]));
|
||||
memset(&link->wr_tx_bufs[idx], 0,
|
||||
sizeof(link->wr_tx_bufs[idx]));
|
||||
test_and_clear_bit(idx, link->wr_tx_mask);
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue