tls: rx: fix the NoPad getsockopt
authorJakub Kicinski <kuba@kernel.org>
Sat, 9 Jul 2022 02:52:54 +0000 (19:52 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 12 Jul 2022 02:48:33 +0000 (19:48 -0700)
Maxim reports do_tls_getsockopt_no_pad() will
always return an error. Indeed looks like refactoring
gone wrong - remove err and use value.

Reported-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Fixes: 88527790c079 ("tls: rx: add sockopt for enabling optimistic decrypt with TLS 1.3")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/tls/tls_main.c

index f3d9dbfa507e54a2571227fce19c2ad8e4e6c6b8..f71b465681127611849746253b4eb0387ce00762 100644 (file)
@@ -539,8 +539,7 @@ static int do_tls_getsockopt_no_pad(struct sock *sk, char __user *optval,
                                    int __user *optlen)
 {
        struct tls_context *ctx = tls_get_ctx(sk);
-       unsigned int value;
-       int err, len;
+       int value, len;
 
        if (ctx->prot_info.version != TLS_1_3_VERSION)
                return -EINVAL;
@@ -551,12 +550,12 @@ static int do_tls_getsockopt_no_pad(struct sock *sk, char __user *optval,
                return -EINVAL;
 
        lock_sock(sk);
-       err = -EINVAL;
+       value = -EINVAL;
        if (ctx->rx_conf == TLS_SW || ctx->rx_conf == TLS_HW)
                value = ctx->rx_no_pad;
        release_sock(sk);
-       if (err)
-               return err;
+       if (value < 0)
+               return value;
 
        if (put_user(sizeof(value), optlen))
                return -EFAULT;