Commit ac55cd61 authored by Dan Carpenter's avatar Dan Carpenter Committed by David S. Miller

tls: return -EFAULT if copy_to_user() fails

The copy_to_user() function returns the number of bytes remaining but we
want to return -EFAULT here.

Fixes: 3c4d7559 ("tls: kernel TLS support")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Acked-by: default avatarDave Watson <davejwatson@fb.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 93bbbfbb
...@@ -273,7 +273,8 @@ static int do_tls_getsockopt_tx(struct sock *sk, char __user *optval, ...@@ -273,7 +273,8 @@ static int do_tls_getsockopt_tx(struct sock *sk, char __user *optval,
} }
if (len == sizeof(crypto_info)) { if (len == sizeof(crypto_info)) {
rc = copy_to_user(optval, crypto_info, sizeof(*crypto_info)); if (copy_to_user(optval, crypto_info, sizeof(*crypto_info)))
rc = -EFAULT;
goto out; goto out;
} }
...@@ -293,9 +294,10 @@ static int do_tls_getsockopt_tx(struct sock *sk, char __user *optval, ...@@ -293,9 +294,10 @@ static int do_tls_getsockopt_tx(struct sock *sk, char __user *optval,
memcpy(crypto_info_aes_gcm_128->iv, ctx->iv, memcpy(crypto_info_aes_gcm_128->iv, ctx->iv,
TLS_CIPHER_AES_GCM_128_IV_SIZE); TLS_CIPHER_AES_GCM_128_IV_SIZE);
release_sock(sk); release_sock(sk);
rc = copy_to_user(optval, if (copy_to_user(optval,
crypto_info_aes_gcm_128, crypto_info_aes_gcm_128,
sizeof(*crypto_info_aes_gcm_128)); sizeof(*crypto_info_aes_gcm_128)))
rc = -EFAULT;
break; break;
} }
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment