allocman: fix use of ALLOCMAN_NO_PADDR
Throughout allocman, various parts of the code for allocating a
specific paddr would check that the paddr fell within the bounds of a
given untyped node. Unfortunately, in some cases ALLOCMAN_NO_PADDR +
node->size would overlap with the paddr and cause a false positive -
allocman would *think* that a given node contains the request paddr,
when in fact it didn't.
Eventually, everything would fall apart: ALLOCMAN_NO_PADDR+node->size
would not be large enough to reach the paddr, and allocman would end
up with a NULL node where it wasn't expecting one.
Fix this issue by avoiding nodes with paddr == ALLOCMAN_NO_PADDR
whenever we're searching through node lists, thus preventing
such 'false positive' situations from occurring.
1 file changed
tree: cc7edecc2e525ef8f60376a8d109bb120ac170c3
- libsel4allocman/
- libsel4bench/
- libsel4debug/
- libsel4muslcsys/
- libsel4platsupport/
- libsel4serialserver/
- libsel4simple/
- libsel4simple-default/
- libsel4sync/
- libsel4test/
- libsel4utils/
- libsel4vka/
- libsel4vmm/
- libsel4vspace/
- .gitignore
- .licenseignore
- CMakeLists.txt
- LICENSE.txt
- README.md
README.md
seL4 Libraries
A collection of libraries for working on seL4.
- libsel4allocman: an allocator for managing virtual memory, malloc memory and cspaces.
- libsel4bench: a library with utilities for benchmarking on seL4.
- libsel4debug: a library with utilities for debugging on seL4. Only useful when debugging a userlevel app; potentially hacky.
- libsel4muslcsys: a library to support muslc for the root task.
- libsel4platsupport: a wrapper around libplatsupport specificially for seL4.
- libsel4simple: an interface which abstracts over the boot environment of a seL4 application.
- libsel4simple-default: an implementation of simple for the master branch of the kernel.
- libsel4simple-experimental: an implementatoin of simple for the experimental branch of the kernel.
- libsel4sync: a synchronisation library that uses notifications to construct basic locks.
- libsel4test: a very basic test infrastructure library.
- libsel4utils: a library OS - Commonly used stuff, actively maintained: implements threads, processes, elf loading, virtual memory management etc.
- libsel4vka: an allocation interface for seL4.
- libsel4vspace: a virtual memory management interface for seL4.
License
The files in this repository are release under standard open source licenses. Please see individual file headers and the LICENSE_BSD2.txt file for details.