add_entry = mptcp_lookup_anno_list_by_saddr(msk, addr);
 
        if (add_entry) {
-               if (mptcp_pm_is_kernel(msk))
+               if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk)))
                        return false;
 
                sk_reset_timer(sk, &add_entry->add_timer,
 
        /* check first for announce */
        if (msk->pm.add_addr_signaled < add_addr_signal_max) {
-               local = select_signal_address(pernet, msk);
-
                /* due to racing events on both ends we can reach here while
                 * previous add address is still running: if we invoke now
                 * mptcp_pm_announce_addr(), that will fail and the
                if (msk->pm.addr_signal & BIT(MPTCP_ADD_ADDR_SIGNAL))
                        return;
 
+               local = select_signal_address(pernet, msk);
                if (!local)
                        goto subflow;
 
+               /* If the alloc fails, we are on memory pressure, not worth
+                * continuing, and trying to create subflows.
+                */
                if (!mptcp_pm_alloc_anno_list(msk, &local->addr))
-                       goto subflow;
+                       return;
 
                __clear_bit(local->addr.id, msk->pm.id_avail_bitmap);
                msk->pm.add_addr_signaled++;