ivshmem: fix crash in corner case

Depending on the configured segments it is possible to hit a
segmentation fault as a result of decrementing an unsigned index with
value 0.

To avoid it, exit the loop if the index has value 0.

Fixes: 40b966a211ab ("ivshmem: library changes for mmaping using ivshmem")

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
This commit is contained in:
Sergio Gonzalez Monroy 2015-06-18 13:27:30 +01:00 committed by Thomas Monjalon
parent 3913d96a04
commit cda3f638c3

View File

@ -377,6 +377,8 @@ build_config(struct rte_ivshmem_metadata * metadata)
for (j = biggest_idx - 1; j >= i; j--) {
memcpy(&pages[j+1], &pages[j], sizeof(struct rte_memseg));
memset(&pages[j], 0, sizeof(struct rte_memseg));
if (j == 0)
break;
}
/* put old biggest segment to its new place */