Use the correct key address when renegotiating the transmit key.

Previously, get_keyid() was returning the address of the receive key
instead of the transmit key when renegotiating the transmit key.  This
could either hang the card (if a connection was only offloading TLS TX
and thus had a receive key address of -1) or cause the connection to
fail by overwriting the wrong key (if both RX and TX TLS were
offloaded).

Submitted by:	Harsh Jain @ Chelsio
Sponsored by:	Chelsio Communications
This commit is contained in:
John Baldwin 2018-04-27 17:20:23 +00:00
parent 1187fc2dc6
commit 4217c685b1

View File

@ -488,7 +488,7 @@ static int
get_keyid(struct tls_ofld_info *tls_ofld, unsigned int ops)
{
return (ops & KEY_WRITE_RX ? tls_ofld->rx_key_addr :
((ops & KEY_WRITE_TX) ? tls_ofld->rx_key_addr : -1));
((ops & KEY_WRITE_TX) ? tls_ofld->tx_key_addr : -1));
}
static int