Merge tag 'edac_urgent_for_v5.9_rc3' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / net / xfrm / xfrm_state.c
index 8be2d92..69520ad 100644 (file)
@@ -2264,7 +2264,7 @@ static bool km_is_alive(const struct km_event *c)
        return is_alive;
 }
 
-int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen)
+int xfrm_user_policy(struct sock *sk, int optname, sockptr_t optval, int optlen)
 {
        int err;
        u8 *data;
@@ -2274,7 +2274,7 @@ int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen
        if (in_compat_syscall())
                return -EOPNOTSUPP;
 
-       if (!optval && !optlen) {
+       if (sockptr_is_null(optval) && !optlen) {
                xfrm_sk_policy_insert(sk, XFRM_POLICY_IN, NULL);
                xfrm_sk_policy_insert(sk, XFRM_POLICY_OUT, NULL);
                __sk_dst_reset(sk);
@@ -2284,7 +2284,7 @@ int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen
        if (optlen <= 0 || optlen > PAGE_SIZE)
                return -EMSGSIZE;
 
-       data = memdup_user(optval, optlen);
+       data = memdup_sockptr(optval, optlen);
        if (IS_ERR(data))
                return PTR_ERR(data);