Skip to content

Commit

Permalink
tls: rx: refactor decrypt_skb_update()
Browse files Browse the repository at this point in the history
Use early return and a jump label to remove two indentation levels.
No functional changes.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jakub Kicinski authored and David S. Miller committed Apr 8, 2022
1 parent 5dbda02 commit 3764ae5
Showing 1 changed file with 33 additions and 33 deletions.
66 changes: 33 additions & 33 deletions net/tls/tls_sw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1564,46 +1564,46 @@ static int decrypt_skb_update(struct sock *sk, struct sk_buff *skb,
struct tls_prot_info *prot = &tls_ctx->prot_info;
struct strp_msg *rxm = strp_msg(skb);
struct tls_msg *tlm = tls_msg(skb);
int pad, err = 0;
int pad, err;

if (!tlm->decrypted) {
if (tls_ctx->rx_conf == TLS_HW) {
err = tls_device_decrypted(sk, tls_ctx, skb, rxm);
if (err < 0)
return err;
}
if (tlm->decrypted) {
*zc = false;
return 0;
}

/* Still not decrypted after tls_device */
if (!tlm->decrypted) {
err = decrypt_internal(sk, skb, dest, NULL, chunk, zc,
async);
if (err < 0) {
if (err == -EINPROGRESS)
tls_advance_record_sn(sk, prot,
&tls_ctx->rx);
else if (err == -EBADMSG)
TLS_INC_STATS(sock_net(sk),
LINUX_MIB_TLSDECRYPTERROR);
return err;
}
} else {
if (tls_ctx->rx_conf == TLS_HW) {
err = tls_device_decrypted(sk, tls_ctx, skb, rxm);
if (err < 0)
return err;

/* skip SW decryption if NIC handled it already */
if (tlm->decrypted) {
*zc = false;
goto decrypt_done;
}
}

pad = padding_length(prot, skb);
if (pad < 0)
return pad;

rxm->full_len -= pad;
rxm->offset += prot->prepend_size;
rxm->full_len -= prot->overhead_size;
tls_advance_record_sn(sk, prot, &tls_ctx->rx);
tlm->decrypted = 1;
} else {
*zc = false;
err = decrypt_internal(sk, skb, dest, NULL, chunk, zc, async);
if (err < 0) {
if (err == -EINPROGRESS)
tls_advance_record_sn(sk, prot, &tls_ctx->rx);
else if (err == -EBADMSG)
TLS_INC_STATS(sock_net(sk), LINUX_MIB_TLSDECRYPTERROR);
return err;
}

return err;
decrypt_done:
pad = padding_length(prot, skb);
if (pad < 0)
return pad;

rxm->full_len -= pad;
rxm->offset += prot->prepend_size;
rxm->full_len -= prot->overhead_size;
tls_advance_record_sn(sk, prot, &tls_ctx->rx);
tlm->decrypted = 1;

return 0;
}

int decrypt_skb(struct sock *sk, struct sk_buff *skb,
Expand Down

0 comments on commit 3764ae5

Please sign in to comment.