Merge tag 'lsm-pr-20221212' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/lsm
[platform/kernel/linux-starfive.git] / security / smack / smack_lsm.c
index cadef2f..9a82a15 100644 (file)
@@ -4074,12 +4074,12 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
  * returns zero on success, an error code otherwise
  */
 static int smack_socket_getpeersec_stream(struct socket *sock,
-                                         char __user *optval,
-                                         int __user *optlen, unsigned len)
+                                         sockptr_t optval, sockptr_t optlen,
+                                         unsigned int len)
 {
        struct socket_smack *ssp;
        char *rcp = "";
-       int slen = 1;
+       u32 slen = 1;
        int rc = 0;
 
        ssp = sock->sk->sk_security;
@@ -4087,15 +4087,16 @@ static int smack_socket_getpeersec_stream(struct socket *sock,
                rcp = ssp->smk_packet->smk_known;
                slen = strlen(rcp) + 1;
        }
-
-       if (slen > len)
+       if (slen > len) {
                rc = -ERANGE;
-       else if (copy_to_user(optval, rcp, slen) != 0)
-               rc = -EFAULT;
+               goto out_len;
+       }
 
-       if (put_user(slen, optlen) != 0)
+       if (copy_to_sockptr(optval, rcp, slen))
+               rc = -EFAULT;
+out_len:
+       if (copy_to_sockptr(optlen, &slen, sizeof(slen)))
                rc = -EFAULT;
-
        return rc;
 }