diff --git a/platform/linux-generic/odp_queue_basic.c b/platform/linux-generic/odp_queue_basic.c
index 9e99994da..e4f6fd820 100644
--- a/platform/linux-generic/odp_queue_basic.c
+++ b/platform/linux-generic/odp_queue_basic.c
@@ -30,9 +30,9 @@
 #define NUM_INTERNAL_QUEUES 64
 
 #include <odp/api/plat/ticketlock_inlines.h>
-#define LOCK(a)      _odp_ticketlock_lock(a)
-#define UNLOCK(a)    _odp_ticketlock_unlock(a)
-#define LOCK_INIT(a) odp_ticketlock_init(a)
+#define LOCK(queue_ptr)      _odp_ticketlock_lock(&((queue_ptr)->s.lock))
+#define UNLOCK(queue_ptr)    _odp_ticketlock_unlock(&((queue_ptr)->s.lock))
+#define LOCK_INIT(queue_ptr)  odp_ticketlock_init(&((queue_ptr)->s.lock))
 
 #include <string.h>
 #include <inttypes.h>
@@ -91,7 +91,7 @@ static int queue_init_global(void)
 	for (i = 0; i < ODP_CONFIG_QUEUES; i++) {
 		/* init locks */
 		queue_entry_t *queue = get_qentry(i);
-		LOCK_INIT(&queue->s.lock);
+		LOCK_INIT(queue);
 		queue->s.index  = i;
 		queue->s.handle = queue_from_index(i);
 	}
@@ -130,12 +130,12 @@ static int queue_term_global(void)
 
 	for (i = 0; i < ODP_CONFIG_QUEUES; i++) {
 		queue = &queue_glb->queue[i];
-		LOCK(&queue->s.lock);
+		LOCK(queue);
 		if (queue->s.status != QUEUE_STATUS_FREE) {
 			ODP_ERR("Not destroyed queue: %s\n", queue->s.name);
 			rc = -1;
 		}
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 	}
 
 	queue_lf_term_global();
@@ -231,10 +231,10 @@ static odp_queue_t queue_create(const char *name,
 		if (queue->s.status != QUEUE_STATUS_FREE)
 			continue;
 
-		LOCK(&queue->s.lock);
+		LOCK(queue);
 		if (queue->s.status == QUEUE_STATUS_FREE) {
 			if (queue_init(queue, name, param)) {
-				UNLOCK(&queue->s.lock);
+				UNLOCK(queue);
 				return ODP_QUEUE_INVALID;
 			}
 
@@ -246,7 +246,7 @@ static odp_queue_t queue_create(const char *name,
 				queue_lf = queue_lf_create(queue);
 
 				if (queue_lf == NULL) {
-					UNLOCK(&queue->s.lock);
+					UNLOCK(queue);
 					return ODP_QUEUE_INVALID;
 				}
 				queue->s.queue_lf = queue_lf;
@@ -265,10 +265,10 @@ static odp_queue_t queue_create(const char *name,
 				queue->s.status = QUEUE_STATUS_READY;
 
 			handle = queue->s.handle;
-			UNLOCK(&queue->s.lock);
+			UNLOCK(queue);
 			break;
 		}
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 	}
 
 	if (handle == ODP_QUEUE_INVALID)
@@ -290,13 +290,13 @@ void sched_cb_queue_destroy_finalize(uint32_t queue_index)
 {
 	queue_entry_t *queue = get_qentry(queue_index);
 
-	LOCK(&queue->s.lock);
+	LOCK(queue);
 
 	if (queue->s.status == QUEUE_STATUS_DESTROYED) {
 		queue->s.status = QUEUE_STATUS_FREE;
 		sched_fn->destroy_queue(queue_index);
 	}
-	UNLOCK(&queue->s.lock);
+	UNLOCK(queue);
 }
 
 static int queue_destroy(odp_queue_t handle)
@@ -307,19 +307,19 @@ static int queue_destroy(odp_queue_t handle)
 	if (handle == ODP_QUEUE_INVALID)
 		return -1;
 
-	LOCK(&queue->s.lock);
+	LOCK(queue);
 	if (queue->s.status == QUEUE_STATUS_FREE) {
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		ODP_ERR("queue \"%s\" already free\n", queue->s.name);
 		return -1;
 	}
 	if (queue->s.status == QUEUE_STATUS_DESTROYED) {
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		ODP_ERR("queue \"%s\" already destroyed\n", queue->s.name);
 		return -1;
 	}
 	if (ring_st_is_empty(&queue->s.ring_st) == 0) {
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		ODP_ERR("queue \"%s\" not empty\n", queue->s.name);
 		return -1;
 	}
@@ -343,7 +343,7 @@ static int queue_destroy(odp_queue_t handle)
 	if (queue->s.param.nonblocking == ODP_NONBLOCKING_LF)
 		queue_lf_destroy(queue->s.queue_lf);
 
-	UNLOCK(&queue->s.lock);
+	UNLOCK(queue);
 
 	return 0;
 }
@@ -373,13 +373,13 @@ static odp_queue_t queue_lookup(const char *name)
 		    queue->s.status == QUEUE_STATUS_DESTROYED)
 			continue;
 
-		LOCK(&queue->s.lock);
+		LOCK(queue);
 		if (strcmp(name, queue->s.name) == 0) {
 			/* found it */
-			UNLOCK(&queue->s.lock);
+			UNLOCK(queue);
 			return queue->s.handle;
 		}
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 	}
 
 	return ODP_QUEUE_INVALID;
@@ -423,10 +423,10 @@ static inline int enq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[],
 
 	buffer_index_from_buf(buf_idx, buf_hdr, num);
 
-	LOCK(&queue->s.lock);
+	LOCK(queue);
 
 	if (odp_unlikely(queue->s.status < QUEUE_STATUS_READY)) {
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		ODP_ERR("Bad queue status\n");
 		return -1;
 	}
@@ -434,7 +434,7 @@ static inline int enq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[],
 	num_enq = ring_st_enq_multi(ring_st, buf_idx, num);
 
 	if (odp_unlikely(num_enq == 0)) {
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		return 0;
 	}
 
@@ -443,7 +443,7 @@ static inline int enq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[],
 		sched = 1;
 	}
 
-	UNLOCK(&queue->s.lock);
+	UNLOCK(queue);
 
 	/* Add queue to scheduling */
 	if (sched && sched_fn->sched_queue(queue->s.index))
@@ -502,12 +502,12 @@ static inline int deq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[],
 
 	ring_st = &queue->s.ring_st;
 
-	LOCK(&queue->s.lock);
+	LOCK(queue);
 
 	if (odp_unlikely(queue->s.status < QUEUE_STATUS_READY)) {
 		/* Bad queue, or queue has been destroyed.
 		 * Scheduler finalizes queue destroy after this. */
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		return -1;
 	}
 
@@ -522,7 +522,7 @@ static inline int deq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[],
 				sched_fn->unsched_queue(queue->s.index);
 		}
 
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 
 		return 0;
 	}
@@ -530,7 +530,7 @@ static inline int deq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[],
 	if (status_sync && queue->s.type == ODP_QUEUE_TYPE_SCHED)
 		sched_fn->save_context(queue->s.index);
 
-	UNLOCK(&queue->s.lock);
+	UNLOCK(queue);
 
 	buffer_index_to_buf(buf_hdr, buf_idx, num_deq);
 
@@ -643,12 +643,12 @@ static int queue_info(odp_queue_t handle, odp_queue_info_t *info)
 
 	queue = get_qentry(queue_id);
 
-	LOCK(&queue->s.lock);
+	LOCK(queue);
 	status = queue->s.status;
 
 	if (odp_unlikely(status == QUEUE_STATUS_FREE ||
 			 status == QUEUE_STATUS_DESTROYED)) {
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		ODP_ERR("Invalid queue status:%d\n", status);
 		return -1;
 	}
@@ -656,7 +656,7 @@ static int queue_info(odp_queue_t handle, odp_queue_info_t *info)
 	info->name = queue->s.name;
 	info->param = queue->s.param;
 
-	UNLOCK(&queue->s.lock);
+	UNLOCK(queue);
 
 	return 0;
 }
@@ -673,11 +673,11 @@ int sched_cb_queue_empty(uint32_t queue_index)
 	queue_entry_t *queue = get_qentry(queue_index);
 	int ret = 0;
 
-	LOCK(&queue->s.lock);
+	LOCK(queue);
 
 	if (odp_unlikely(queue->s.status < QUEUE_STATUS_READY)) {
 		/* Bad queue, or queue has been destroyed. */
-		UNLOCK(&queue->s.lock);
+		UNLOCK(queue);
 		return -1;
 	}
 
@@ -689,7 +689,7 @@ int sched_cb_queue_empty(uint32_t queue_index)
 		ret = 1;
 	}
 
-	UNLOCK(&queue->s.lock);
+	UNLOCK(queue);
 
 	return ret;
 }
