contigmem: free allocated memory on error
Fixes: 764bf26873
("add FreeBSD support")
Cc: stable@dpdk.org
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
parent
0bba9e6050
commit
5f51eca224
@ -123,19 +123,21 @@ static int
|
|||||||
contigmem_load()
|
contigmem_load()
|
||||||
{
|
{
|
||||||
char index_string[8], description[32];
|
char index_string[8], description[32];
|
||||||
int i;
|
int i, error = 0;
|
||||||
|
|
||||||
if (contigmem_num_buffers > RTE_CONTIGMEM_MAX_NUM_BUFS) {
|
if (contigmem_num_buffers > RTE_CONTIGMEM_MAX_NUM_BUFS) {
|
||||||
printf("%d buffers requested is greater than %d allowed\n",
|
printf("%d buffers requested is greater than %d allowed\n",
|
||||||
contigmem_num_buffers, RTE_CONTIGMEM_MAX_NUM_BUFS);
|
contigmem_num_buffers, RTE_CONTIGMEM_MAX_NUM_BUFS);
|
||||||
return EINVAL;
|
error = EINVAL;
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (contigmem_buffer_size < PAGE_SIZE ||
|
if (contigmem_buffer_size < PAGE_SIZE ||
|
||||||
(contigmem_buffer_size & (contigmem_buffer_size - 1)) != 0) {
|
(contigmem_buffer_size & (contigmem_buffer_size - 1)) != 0) {
|
||||||
printf("buffer size 0x%lx is not greater than PAGE_SIZE and "
|
printf("buffer size 0x%lx is not greater than PAGE_SIZE and "
|
||||||
"power of two\n", contigmem_buffer_size);
|
"power of two\n", contigmem_buffer_size);
|
||||||
return EINVAL;
|
error = EINVAL;
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < contigmem_num_buffers; i++) {
|
for (i = 0; i < contigmem_num_buffers; i++) {
|
||||||
@ -145,7 +147,8 @@ contigmem_load()
|
|||||||
|
|
||||||
if (contigmem_buffers[i] == NULL) {
|
if (contigmem_buffers[i] == NULL) {
|
||||||
printf("contigmalloc failed for buffer %d\n", i);
|
printf("contigmalloc failed for buffer %d\n", i);
|
||||||
return ENOMEM;
|
error = ENOMEM;
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("%2u: virt=%p phys=%p\n", i, contigmem_buffers[i],
|
printf("%2u: virt=%p phys=%p\n", i, contigmem_buffers[i],
|
||||||
@ -165,6 +168,14 @@ contigmem_load()
|
|||||||
GID_WHEEL, 0600, "contigmem");
|
GID_WHEEL, 0600, "contigmem");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
for (i = 0; i < contigmem_num_buffers; i++)
|
||||||
|
if (contigmem_buffers[i] != NULL)
|
||||||
|
contigfree(contigmem_buffers[i], contigmem_buffer_size,
|
||||||
|
M_CONTIGMEM);
|
||||||
|
|
||||||
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
Loading…
Reference in New Issue
Block a user