diff --git a/contrib/ofed/libmlx5/verbs.c b/contrib/ofed/libmlx5/verbs.c
--- a/contrib/ofed/libmlx5/verbs.c
+++ b/contrib/ofed/libmlx5/verbs.c
@@ -2077,6 +2077,10 @@
 	if (!rwq)
 		return NULL;
 
+	ret = ibv_init_wq(&rwq->wq);
+	if (ret < 0)
+		goto err;
+
 	rwq->wq_sig = rwq_sig_enabled(context);
 	if (rwq->wq_sig)
 		cmd.drv.flags = MLX5_RWQ_FLAG_SIGNATURE;
@@ -2084,13 +2088,9 @@
 	ret = mlx5_calc_rwq_size(ctx, rwq, attr);
 	if (ret < 0) {
 		errno = -ret;
-		goto err;
+		goto err_cleanup_wq;
 	}
 
-	ret = ibv_init_wq(&rwq->wq);
-	if (ret < 0)
-		goto err;
-
 	rwq->buf_size = ret;
 	if (mlx5_alloc_rwq_buf(context, rwq, ret))
 		goto err_cleanup_wq;