i386 | pc386 | startup | bspgetworkarea.c | incorrect value of work_area_size
Wendell Pereira da Silva
wendell.silva at compsisnet.com.br
Wed Oct 24 18:44:23 UTC 2012
Hi,
Before filing a bug report, I would like to share some thoughts about the following code of bspgetworkarea.c:
void bsp_get_work_area(
void **work_area_start,
uintptr_t *work_area_size,
void **heap_start,
uintptr_t *heap_size
)
{
(... removed for simplicity)
*work_area_size = (uintptr_t) bsp_mem_size - (uintptr_t) rtemsWorkAreaStart;
(... removed for simplicity)
I've done an experiment by forcing my app to statically allocate a huge memory area producing a bss larger than the physical memory available on my board. I expected a message like "not enough memory for RTEMS workspace". But, this caused the rtemsWorkAreaStart be greater than bsp_mem_size, producing a work_area_size a very large value since it they are unsigned. The program, then, entered a very long loop while dirtying the memory (because I defined BSP_DIRT_MEMORY) back on bootcard.c.
My questions are:
- Where is the good place the check if bsp_mem_size got less than rtemsWorkAreaStart?
My sugestion:
- force work_are_size = 0, when bsp_mem_size is less than rtemsWorkAreaStart inside bsp_get_work_area().
More info:
Code verified: RTEMS 4.11 (4.10.99), RTEMS 4.10.2
Best regards for all.
--Wendell.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20121024/850d35b4/attachment.html>
More information about the users
mailing list