struct nlattr *token = info->attrs[MPTCP_PM_ATTR_TOKEN];
        struct nlattr *attr = info->attrs[MPTCP_PM_ATTR_ADDR];
        struct net *net = sock_net(skb->sk);
+       struct mptcp_pm_addr_entry *entry;
        struct mptcp_sock *msk;
        int ret = -EINVAL;
        struct sock *sk;
        if (loc.flags & MPTCP_PM_ADDR_FLAG_BACKUP)
                bkup = 1;
 
+       spin_lock_bh(&msk->pm.lock);
+       list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
+               if (mptcp_addresses_equal(&entry->addr, &loc.addr, false)) {
+                       if (bkup)
+                               entry->flags |= MPTCP_PM_ADDR_FLAG_BACKUP;
+                       else
+                               entry->flags &= ~MPTCP_PM_ADDR_FLAG_BACKUP;
+               }
+       }
+       spin_unlock_bh(&msk->pm.lock);
+
        lock_sock(sk);
        ret = mptcp_pm_nl_mp_prio_send_ack(msk, &loc.addr, &rem.addr, bkup);
        release_sock(sk);