@@ -274,6 +274,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer)
274274 add_timer );
275275 struct mptcp_sock * msk = entry -> sock ;
276276 struct sock * sk = (struct sock * )msk ;
277+ unsigned int timeout ;
277278
278279 pr_debug ("msk=%p\n" , msk );
279280
@@ -291,6 +292,10 @@ static void mptcp_pm_add_timer(struct timer_list *timer)
291292 goto out ;
292293 }
293294
295+ timeout = mptcp_get_add_addr_timeout (sock_net (sk ));
296+ if (!timeout )
297+ goto out ;
298+
294299 spin_lock_bh (& msk -> pm .lock );
295300
296301 if (!mptcp_pm_should_add_signal_addr (msk )) {
@@ -302,7 +307,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer)
302307
303308 if (entry -> retrans_times < ADD_ADDR_RETRANS_MAX )
304309 sk_reset_timer (sk , timer ,
305- jiffies + mptcp_get_add_addr_timeout ( sock_net ( sk )) );
310+ jiffies + timeout );
306311
307312 spin_unlock_bh (& msk -> pm .lock );
308313
@@ -344,6 +349,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
344349 struct mptcp_pm_add_entry * add_entry = NULL ;
345350 struct sock * sk = (struct sock * )msk ;
346351 struct net * net = sock_net (sk );
352+ unsigned int timeout ;
347353
348354 lockdep_assert_held (& msk -> pm .lock );
349355
@@ -353,9 +359,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
353359 if (WARN_ON_ONCE (mptcp_pm_is_kernel (msk )))
354360 return false;
355361
356- sk_reset_timer (sk , & add_entry -> add_timer ,
357- jiffies + mptcp_get_add_addr_timeout (net ));
358- return true;
362+ goto reset_timer ;
359363 }
360364
361365 add_entry = kmalloc (sizeof (* add_entry ), GFP_ATOMIC );
@@ -369,8 +373,10 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
369373 add_entry -> retrans_times = 0 ;
370374
371375 timer_setup (& add_entry -> add_timer , mptcp_pm_add_timer , 0 );
372- sk_reset_timer (sk , & add_entry -> add_timer ,
373- jiffies + mptcp_get_add_addr_timeout (net ));
376+ reset_timer :
377+ timeout = mptcp_get_add_addr_timeout (net );
378+ if (timeout )
379+ sk_reset_timer (sk , & add_entry -> add_timer , jiffies + timeout );
374380
375381 return true;
376382}
0 commit comments