On 11/30/16 03:48, Bill Fischofer wrote:
Resolve bug https://bugs.linaro.org/show_bug.cgi?id=2622 by
re-initializing origin_qe to NULL when a buffer is allocated. This step
was omitted in the switch to ring pool allocation introduced in
commit ID c8cf1d87783d4b4c628f219803b78731b8d4ade4
Signed-off-by: Bill Fischofer <bill.fischo...@linaro.org>
---
platform/linux-generic/odp_pool.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/platform/linux-generic/odp_pool.c
b/platform/linux-generic/odp_pool.c
index 4be3827..0b3d694 100644
--- a/platform/linux-generic/odp_pool.c
+++ b/platform/linux-generic/odp_pool.c
@@ -648,9 +648,12 @@ int buffer_alloc_multi(pool_t *pool, odp_buffer_t buf[],
cache->num = cache_num - num_ch;
}
- if (buf_hdr) {
- for (i = 0; i < num_ch; i++)
- buf_hdr[i] = buf_hdl_to_hdr(buf[i]);
+ for (i = 0; i < num_ch; i++) {
+ odp_buffer_hdr_t *hdr = buf_hdl_to_hdr(buf[i]);
+
+ hdr->origin_qe = NULL;
+ if (buf_hdr)
+ buf_hdr[i] = hdr;
}
isn't it better unset orig_qe in loop in line 611? In that case you need
to walk loop 2 times.
Maxim.
return num_ch + num_deq;