tls: rx: don't handle async in tls_sw_advance_skb()
tls_sw_advance_skb() caters to the async case when skb argument is NULL. In that case it simply unpauses the strparser. These are surprising semantics to a person reading the code, and result in higher LoC, so inline the __strp_unpause and only call tls_sw_advance_skb() when we actually move past an skb. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
06554f4ffc
Коммит
fc8da80f99
|
@ -1616,17 +1616,14 @@ static bool tls_sw_advance_skb(struct sock *sk, struct sk_buff *skb,
|
|||
{
|
||||
struct tls_context *tls_ctx = tls_get_ctx(sk);
|
||||
struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx);
|
||||
struct strp_msg *rxm = strp_msg(skb);
|
||||
|
||||
if (skb) {
|
||||
struct strp_msg *rxm = strp_msg(skb);
|
||||
|
||||
if (len < rxm->full_len) {
|
||||
rxm->offset += len;
|
||||
rxm->full_len -= len;
|
||||
return false;
|
||||
}
|
||||
consume_skb(skb);
|
||||
if (len < rxm->full_len) {
|
||||
rxm->offset += len;
|
||||
rxm->full_len -= len;
|
||||
return false;
|
||||
}
|
||||
consume_skb(skb);
|
||||
|
||||
/* Finished with message */
|
||||
ctx->recv_pkt = NULL;
|
||||
|
@ -1898,10 +1895,9 @@ pick_next_record:
|
|||
/* For async or peek case, queue the current skb */
|
||||
if (async || is_peek || retain_skb) {
|
||||
skb_queue_tail(&ctx->rx_list, skb);
|
||||
skb = NULL;
|
||||
}
|
||||
|
||||
if (tls_sw_advance_skb(sk, skb, chunk)) {
|
||||
ctx->recv_pkt = NULL;
|
||||
__strp_unpause(&ctx->strp);
|
||||
} else if (tls_sw_advance_skb(sk, skb, chunk)) {
|
||||
/* Return full control message to
|
||||
* userspace before trying to parse
|
||||
* another message type
|
||||
|
|
Загрузка…
Ссылка в новой задаче