[Bug 1747] Heap extend allows discontinuous memory regions.
bugzilla-daemon at rtems.org
bugzilla-daemon at rtems.org
Tue Mar 1 07:55:07 UTC 2011
https://www.rtems.org/bugzilla/show_bug.cgi?id=1747
--- Comment #1 from Sebastian Huber <sebastian.huber at embedded-brains.de> 2011-03-01 01:55:07 CST ---
(In reply to comment #0)
> The check in (cpukit/ChangeLog) states:
>
> 2010-06-07 Sebastian Huber <sebastian.huber at embedded-brains.de>
>
> * score/src/heapextend.c: Implemented support for scattered heap areas.
>
> The heap cannot support scattered blocks because the _Heap_Is_block_in_heap
> assumes the region is continuous between the first and last blocks of the heap.
This scattered heap support is very important for low-end systems like LPC2300
and also high-end multi-core systems which configure the heap depending on a
configuration (via file or network).
> Making the gaps in the regions passed to the heap extend call used is
> questionable and makes the _Heap_Is_block_in_heap test not really perform the
> task it's name states. This is an issue because it is this check that
> determines if a heap free of NULL should proceed. This issue is covered in
> another PR.
The only things _Heap_Free() has to accept without damage is a valid pointer to
an allocated area or NULL. Everything else is a bug and can corrupt the heap.
The _Heap_Is_block_in_heap() provides something more for convenience.
> I also wonder about a heap free call to an address that maps to one of the
> "in-use" gap regions. The previous heap code knew if an address was in the heap
> and therefore it was kind of safe to probe for a valid block. This assumption
> is now not valid.
To check weather a pointer is inside the heap area yields not much. You are
not supposed to pass arbitrary values to _Heap_Free().
>
> The former heap extend code:
>
>
> http://www.rtems.org/viewvc/rtems/cpukit/score/src/heapextend.c?revision=1.7&view=markup
>
> clearly states the type of memory that can be added to an existing heap. The
> current code has no restrictions. The user manual is not great in this area. It
> would also be useful if comments are added to the heap extend code.
>
> The heap extend code is used by the rtems_region_extend call and this call
> clearly states in the manual that the memory region must be continuous. If this
> has changed we should discuss the API change and make better note of it. I
> also suspect the testsuite will need additions to test any API changes.
We should update the documentation with the new requirements.
http://www.rtems.org/onlinedocs/doxygen/cpukit/html/group__ScoreHeap.html#ga0313c0089b6a943c0888ffc595b6f4e1
--
Configure bugmail: https://www.rtems.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.
More information about the bugs
mailing list