lantiq: Reduce ugliness of ugly hack
authorDaniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
Fri, 27 May 2016 22:26:09 +0000 (15:26 -0700)
committerJohn Crispin <john@phrozen.org>
Fri, 27 May 2016 14:08:47 +0000 (16:08 +0200)
Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch

index 80f085492c40e25501d527d76fb7ab4961fa968e..1d1e5669ac070501c9e09f41caa76c1a1a978a80 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/include/drv_dsl_cpe_os_linux.h
 +++ b/src/include/drv_dsl_cpe_os_linux.h
-@@ -214,12 +214,35 @@ static inline int dsl_mutex_lock(struct 
+@@ -214,12 +214,25 @@ static inline int dsl_mutex_lock(struct 
  #define DSL_DRV_MUTEX_LOCK(id)               down_interruptible(&(id))
  #define DSL_DRV_MUTEX_UNLOCK(id)             up(&(id))
  #endif
@@ -8,21 +8,11 @@
 +static inline long
 +ugly_hack_sleep_on_timeout(wait_queue_head_t *q, long timeout)
 +{
-+      unsigned long flags;
-+      wait_queue_t wait;
-+
-+      init_waitqueue_entry(&wait, current);
-+
-+      __set_current_state(TASK_INTERRUPTIBLE);
-+      spin_lock_irqsave(&q->lock, flags);
-+      __add_wait_queue(q, &wait);
-+      spin_unlock(&q->lock);
++      DEFINE_WAIT(wait);
 +
++      prepare_to_wait(q, &wait, TASK_INTERRUPTIBLE);
 +      timeout = schedule_timeout(timeout);
-+
-+      spin_lock_irq(&q->lock);
-+      __remove_wait_queue(q, &wait);
-+      spin_unlock_irqrestore(&q->lock, flags);
++      finish_wait(q, &wait);
 +
 +      return timeout;
 +}