return err;
        }
 
+       sk = (struct sock *)msk;
+
        if (!mptcp_pm_is_userspace(msk)) {
                GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected");
                goto create_err;
                goto create_err;
        }
 
-       sk = (struct sock *)msk;
-
        if (!mptcp_pm_addr_families_match(sk, &addr_l, &addr_r)) {
                GENL_SET_ERR_MSG(info, "families mismatch");
                err = -EINVAL;
        spin_unlock_bh(&msk->pm.lock);
 
  create_err:
-       sock_put((struct sock *)msk);
+       sock_put(sk);
        return err;
 }
 
                return err;
        }
 
+       sk = (struct sock *)msk;
+
        if (!mptcp_pm_is_userspace(msk)) {
                GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected");
                goto destroy_err;
                goto destroy_err;
        }
 
-       sk = (struct sock *)msk;
        lock_sock(sk);
        ssk = mptcp_nl_find_ssk(msk, &addr_l, &addr_r);
        if (ssk) {
        release_sock(sk);
 
 destroy_err:
-       sock_put((struct sock *)msk);
+       sock_put(sk);
        return err;
 }