diff options
| author | Mark Brown <broonie@kernel.org> | 2020-08-25 11:01:46 +0100 | 
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2020-08-25 11:01:46 +0100 | 
| commit | 3bec5b6aae830355e786e204b20a7cea38c3a8ed (patch) | |
| tree | fd597b87faf55ceb2a207ee94f4feca6276696db /net/tls/tls_main.c | |
| parent | a577f3456c0a2fac3dee037c483753e6e68f3e49 (diff) | |
| parent | d012a7190fc1fd72ed48911e77ca97ba4521bccd (diff) | |
Merge tag 'v5.9-rc2' into regulator-5.9
Linux 5.9-rc2
Diffstat (limited to 'net/tls/tls_main.c')
| -rw-r--r-- | net/tls/tls_main.c | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c index ec10041c6b7d..bbc52b088d29 100644 --- a/net/tls/tls_main.c +++ b/net/tls/tls_main.c @@ -450,7 +450,7 @@ static int tls_getsockopt(struct sock *sk, int level, int optname,  	return do_tls_getsockopt(sk, optname, optval, optlen);  } -static int do_tls_setsockopt_conf(struct sock *sk, char __user *optval, +static int do_tls_setsockopt_conf(struct sock *sk, sockptr_t optval,  				  unsigned int optlen, int tx)  {  	struct tls_crypto_info *crypto_info; @@ -460,7 +460,7 @@ static int do_tls_setsockopt_conf(struct sock *sk, char __user *optval,  	int rc = 0;  	int conf; -	if (!optval || (optlen < sizeof(*crypto_info))) { +	if (sockptr_is_null(optval) || (optlen < sizeof(*crypto_info))) {  		rc = -EINVAL;  		goto out;  	} @@ -479,7 +479,7 @@ static int do_tls_setsockopt_conf(struct sock *sk, char __user *optval,  		goto out;  	} -	rc = copy_from_user(crypto_info, optval, sizeof(*crypto_info)); +	rc = copy_from_sockptr(crypto_info, optval, sizeof(*crypto_info));  	if (rc) {  		rc = -EFAULT;  		goto err_crypto_info; @@ -522,8 +522,9 @@ static int do_tls_setsockopt_conf(struct sock *sk, char __user *optval,  		goto err_crypto_info;  	} -	rc = copy_from_user(crypto_info + 1, optval + sizeof(*crypto_info), -			    optlen - sizeof(*crypto_info)); +	rc = copy_from_sockptr_offset(crypto_info + 1, optval, +				      sizeof(*crypto_info), +				      optlen - sizeof(*crypto_info));  	if (rc) {  		rc = -EFAULT;  		goto err_crypto_info; @@ -579,8 +580,8 @@ out:  	return rc;  } -static int do_tls_setsockopt(struct sock *sk, int optname, -			     char __user *optval, unsigned int optlen) +static int do_tls_setsockopt(struct sock *sk, int optname, sockptr_t optval, +			     unsigned int optlen)  {  	int rc = 0; @@ -600,7 +601,7 @@ static int do_tls_setsockopt(struct sock *sk, int optname,  }  static int tls_setsockopt(struct sock *sk, int level, int optname, -			  char __user *optval, unsigned int optlen) +			  sockptr_t optval, unsigned int optlen)  {  	struct tls_context *ctx = tls_get_ctx(sk);  | 
