{
        struct mptcp_subflow_context *subflow;
        struct sock *sk = (struct sock *)msk;
-       int val;
-
-       if (optlen < sizeof(int))
-               return -EINVAL;
+       int val, ret;
 
-       if (copy_from_sockptr(&val, optval, sizeof(val)))
-               return -EFAULT;
+       ret = mptcp_get_int_option(msk, optval, optlen, &val);
+       if (ret)
+               return ret;
 
        lock_sock(sk);
        sockopt_seq_inc(msk);
 {
        struct mptcp_subflow_context *subflow;
        struct sock *sk = (struct sock *)msk;
-       int val;
-
-       if (optlen < sizeof(int))
-               return -EINVAL;
+       int val, ret;
 
-       if (copy_from_sockptr(&val, optval, sizeof(val)))
-               return -EFAULT;
+       ret = mptcp_get_int_option(msk, optval, optlen, &val);
+       if (ret)
+               return ret;
 
        lock_sock(sk);
        sockopt_seq_inc(msk);