diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
index c24f25ab67d324f64f67126ed8f27639d5988a34..bb14c34776801e7dd43ce13c8552794d89a5c197 100644
--- a/net/irda/af_irda.c
+++ b/net/irda/af_irda.c
@@ -2558,8 +2558,8 @@ static int irda_getsockopt(struct socket *sock, int level, int optname,
 			self->errno = 0;
 			setup_timer(&self->watchdog, irda_discovery_timeout,
 					(unsigned long)self);
-			self->watchdog.expires = jiffies + (val * HZ/1000);
-			add_timer(&(self->watchdog));
+			mod_timer(&self->watchdog,
+				  jiffies + msecs_to_jiffies(val));
 
 			/* Wait for IR-LMP to call us back */
 			__wait_event_interruptible(self->query_wait,