diff options
author | Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> | 2016-05-27 15:26:09 -0700 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2016-05-27 16:08:47 +0200 |
commit | 8333a6d0bab913285770449f5100597b691b544f (patch) | |
tree | d67d6955ecfcc2249554c1d5e5c68d8272c40981 /package/kernel | |
parent | e8780b643bb8be6201102badd2708a6a5c758331 (diff) | |
download | upstream-8333a6d0bab913285770449f5100597b691b544f.tar.gz upstream-8333a6d0bab913285770449f5100597b691b544f.tar.bz2 upstream-8333a6d0bab913285770449f5100597b691b544f.zip |
lantiq: Reduce ugliness of ugly hack
Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
Diffstat (limited to 'package/kernel')
-rw-r--r-- | package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch b/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch index 80f085492c..1d1e5669ac 100644 --- a/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch +++ b/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch @@ -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; +} |