net/tls: handle MSG_EOR for tls_device TX flow
authorHannes Reinecke <hare@suse.de>
Wed, 26 Jul 2023 19:15:52 +0000 (21:15 +0200)
committerJakub Kicinski <kuba@kernel.org>
Fri, 28 Jul 2023 02:49:34 +0000 (19:49 -0700)
tls_push_data() MSG_MORE, but bails out on MSG_EOR.
Seeing that MSG_EOR is basically the opposite of MSG_MORE
this patch adds handling MSG_EOR by treating it as the
absence of MSG_MORE.
Consequently we should return an error when both are set.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20230726191556.41714-3-hare@suse.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/tls/tls_device.c

index 2021fe557e5030a420e08741f0408f25b9f8cb89..5df18f696d7f874f0d1f186a1b38558b8ba5e224 100644 (file)
@@ -441,9 +441,13 @@ static int tls_push_data(struct sock *sk,
        long timeo;
 
        if (flags &
-           ~(MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL | MSG_SPLICE_PAGES))
+           ~(MSG_MORE | MSG_DONTWAIT | MSG_NOSIGNAL |
+             MSG_SPLICE_PAGES | MSG_EOR))
                return -EOPNOTSUPP;
 
+       if ((flags & (MSG_MORE | MSG_EOR)) == (MSG_MORE | MSG_EOR))
+               return -EINVAL;
+
        if (unlikely(sk->sk_err))
                return -sk->sk_err;