return mptcp_pm_nl_get_local_id(msk, &skc_local);
 }
 
+int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id,
+                                        u8 *flags, int *ifindex)
+{
+       *flags = 0;
+       *ifindex = 0;
+
+       if (!id)
+               return 0;
+
+       if (mptcp_pm_is_userspace(msk))
+               return mptcp_userspace_pm_get_flags_and_ifindex_by_id(msk, id, flags, ifindex);
+       return mptcp_pm_nl_get_flags_and_ifindex_by_id(msk, id, flags, ifindex);
+}
+
 void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struct sock *ssk)
 {
        struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
 
        return ret;
 }
 
-int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id,
-                                        u8 *flags, int *ifindex)
+int mptcp_pm_nl_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id,
+                                           u8 *flags, int *ifindex)
 {
        struct mptcp_pm_addr_entry *entry;
        struct sock *sk = (struct sock *)msk;
        struct net *net = sock_net(sk);
 
-       *flags = 0;
-       *ifindex = 0;
-
-       if (id) {
-               if (mptcp_pm_is_userspace(msk))
-                       return mptcp_userspace_pm_get_flags_and_ifindex_by_id(msk,
-                                                                             id,
-                                                                             flags,
-                                                                             ifindex);
-
-               rcu_read_lock();
-               entry = __lookup_addr_by_id(pm_nl_get_pernet(net), id);
-               if (entry) {
-                       *flags = entry->flags;
-                       *ifindex = entry->ifindex;
-               }
-               rcu_read_unlock();
+       rcu_read_lock();
+       entry = __lookup_addr_by_id(pm_nl_get_pernet(net), id);
+       if (entry) {
+               *flags = entry->flags;
+               *ifindex = entry->ifindex;
        }
+       rcu_read_unlock();
 
        return 0;
 }
 
 {
        struct mptcp_pm_addr_entry *entry, *match = NULL;
 
-       *flags = 0;
-       *ifindex = 0;
-
        spin_lock_bh(&msk->pm.lock);
        list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
                if (id == entry->addr.id) {
 
 int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk,
                                         unsigned int id,
                                         u8 *flags, int *ifindex);
+int mptcp_pm_nl_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id,
+                                           u8 *flags, int *ifindex);
 int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk,
                                                   unsigned int id,
                                                   u8 *flags, int *ifindex);