zephyr/lib
Yasushi SHOJI fedab40576 lib: os: heap-validate: Fix wrong chunkid returned by max_chunkid()
With 64 bytes heap and 1 byte allocation on a big heap, we get:

  0   1   2   3   4   5   6   7
| h | h | b | b | c | 1 | s | f |

where
  - h: chunk0 header
  - b: buckets in chunk0
  - c: chunk header for the first allocation
  - 1: chunk mem
  - s: solo free header
  - f: end marker / footer

max_chunkid() was returning h->end_chunk - min_chunk_size(h), which is
5 because min_chunk_size() on a big heap is 2.  This works if you
don't have the solo free header at 6 and the heap is like:

  0   1   2   3   4   5   6
| h | h | b | b | c | 1 | f |

max_chunkid() in this case gives you 6 - 2 = 4, which is the right
chunkid for the last chunk header.

This commit replaces max_chunkid() with h->end_chunk and "<=" (less
than or equal to) with "<" (less than), so that it always compares
against the end maker chunkid, but the code won't touch the end maker
itself.

Signed-off-by: Yasushi SHOJI <yashi@spacecubics.com>
2021-06-23 06:18:44 -04:00
..
gui lib: gui: lvgl: Fix logging macro usage 2021-04-22 15:29:15 -05:00
libc lib: add default labels and comments to switch statements 2021-06-04 16:22:23 -05:00
open-amp
os lib: os: heap-validate: Fix wrong chunkid returned by max_chunkid() 2021-06-23 06:18:44 -04:00
posix posix: pthread_exit: check for null before dereferencing 2021-05-27 09:07:57 -05:00
util
CMakeLists.txt portability: move cmsis APIs to subsys/portability 2021-04-20 08:45:05 -04:00
Kconfig portability: move cmsis APIs to subsys/portability 2021-04-20 08:45:05 -04:00