diff options
author | Nicolas Saenz Julienne <nsaenzjulienne@suse.de> | 2018-12-12 19:51:33 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-12-17 14:20:37 +0100 |
commit | a772f116702e3f0afdd7e6acadc1b8fb3b20b9ff (patch) | |
tree | 563dd41b60a1e6752e4b630566cf36cef5b6a20b /drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c | |
parent | staging: bcm2835-audio: double free in init error path (diff) | |
download | linux-dev-a772f116702e3f0afdd7e6acadc1b8fb3b20b9ff.tar.xz linux-dev-a772f116702e3f0afdd7e6acadc1b8fb3b20b9ff.zip |
staging: vchiq: switch to wait_for_completion_killable
This fixes f27e47bc6b8b ("staging: vchiq: use completions instead of
semaphores") as it neglected the subtle down_interruptible() macro
override in vchiq_killable.h. Hence all completions should be killable
instead of interruptible.
Fixes: f27e47bc6b8b ("staging: vchiq: use completions instead of semaphores")
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c')
-rw-r--r-- | drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c index 4b8554bc647e..42e10d7d97a4 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c @@ -80,7 +80,7 @@ void vchiu_queue_push(VCHIU_QUEUE_T *queue, VCHIQ_HEADER_T *header) return; while (queue->write == queue->read + queue->size) { - if (wait_for_completion_interruptible(&queue->pop)) + if (wait_for_completion_killable(&queue->pop)) flush_signals(current); } @@ -93,7 +93,7 @@ void vchiu_queue_push(VCHIU_QUEUE_T *queue, VCHIQ_HEADER_T *header) VCHIQ_HEADER_T *vchiu_queue_peek(VCHIU_QUEUE_T *queue) { while (queue->write == queue->read) { - if (wait_for_completion_interruptible(&queue->push)) + if (wait_for_completion_killable(&queue->push)) flush_signals(current); } @@ -107,7 +107,7 @@ VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue) VCHIQ_HEADER_T *header; while (queue->write == queue->read) { - if (wait_for_completion_interruptible(&queue->push)) + if (wait_for_completion_killable(&queue->push)) flush_signals(current); } |