Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. While the original code does use TASK_INTERRUPTIBLE, it does not check for signals, so I believe msleep() is more appropriate. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer --- kj-domen/drivers/net/slip.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff -puN drivers/net/slip.c~msleep-drivers_net_slip drivers/net/slip.c --- kj/drivers/net/slip.c~msleep-drivers_net_slip 2005-04-05 12:56:06.000000000 +0200 +++ kj-domen/drivers/net/slip.c 2005-04-05 12:56:06.000000000 +0200 @@ -75,6 +75,7 @@ #include #include #include +#include #include "slip.h" #ifdef CONFIG_INET #include @@ -1395,10 +1396,8 @@ static void __exit slip_exit(void) /* First of all: check for active disciplines and hangup them. */ do { - if (busy) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ / 10); - } + if (busy) + msleep(100); busy = 0; for (i = 0; i < slip_maxdev; i++) { _