Message ID | 1441880248-29315-2-git-send-email-paolo.pisati@canonical.com |
---|---|
State | New |
Headers | show |
diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c index 05e7979..384acb8 100644 --- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c +++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c @@ -46,6 +46,7 @@ int vchiu_queue_init(VCHIU_QUEUE_T *queue, int size) queue->size = size; queue->read = 0; queue->write = 0; + queue->initialized = 1; sema_init(&queue->pop, 0); sema_init(&queue->push, 0); @@ -76,6 +77,9 @@ int vchiu_queue_is_full(VCHIU_QUEUE_T *queue) void vchiu_queue_push(VCHIU_QUEUE_T *queue, VCHIQ_HEADER_T *header) { + if (!queue->initialized) + return; + while (queue->write == queue->read + queue->size) { if (down_interruptible(&queue->pop) != 0) { flush_signals(current); diff --git a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h index f4d0b66..4055d4b 100644 --- a/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h +++ b/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h @@ -60,6 +60,7 @@ typedef struct { int size; int read; int write; + int initialized; struct semaphore pop; struct semaphore push;