add_timer);
        struct mptcp_sock *msk = entry->sock;
        struct sock *sk = (struct sock *)msk;
+       unsigned int timeout;
 
        pr_debug("msk=%p\n", msk);
 
                goto out;
        }
 
+       timeout = mptcp_get_add_addr_timeout(sock_net(sk));
+       if (!timeout)
+               goto out;
+
        spin_lock_bh(&msk->pm.lock);
 
        if (!mptcp_pm_should_add_signal_addr(msk)) {
 
        if (entry->retrans_times < ADD_ADDR_RETRANS_MAX)
                sk_reset_timer(sk, timer,
-                              jiffies + mptcp_get_add_addr_timeout(sock_net(sk)));
+                              jiffies + timeout);
 
        spin_unlock_bh(&msk->pm.lock);
 
        struct mptcp_pm_add_entry *add_entry = NULL;
        struct sock *sk = (struct sock *)msk;
        struct net *net = sock_net(sk);
+       unsigned int timeout;
 
        lockdep_assert_held(&msk->pm.lock);
 
 
        timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0);
 reset_timer:
-       sk_reset_timer(sk, &add_entry->add_timer,
-                      jiffies + mptcp_get_add_addr_timeout(net));
+       timeout = mptcp_get_add_addr_timeout(net);
+       if (timeout)
+               sk_reset_timer(sk, &add_entry->add_timer, jiffies + timeout);
 
        return true;
 }