zephyr/lib/os
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
..
CMakeLists.txt sys: introduce bit arrays 2021-05-07 13:36:22 -04:00
Kconfig lib: os: Removed deprecated Kconfig PRINTK64 symbol 2021-06-11 16:35:19 -05:00
Kconfig.cbprintf lib: os: cbprintf: Add static packaging 2021-03-11 09:54:39 +01:00
assert.c userspace: rename _is_user_context -> k_is_user_context 2021-04-01 05:34:17 -04:00
base64.c zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
bitarray.c sys: introduce bit arrays 2021-05-07 13:36:22 -04:00
cbprintf.c lib: cbprintf: add libc f/printf substitutes 2021-01-27 13:34:06 -05:00
cbprintf_complete.c lib: add default labels and comments to switch statements 2021-06-04 16:22:23 -05:00
cbprintf_nano.c coding guidelines 10.4: casting operands to have same types 2021-05-08 12:32:15 +02:00
cbprintf_packaged.c coding guidelines 11.9: fix literal zero as the null-ptr-constant 2021-05-12 21:51:40 -04:00
crc7_sw.c zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
crc8_sw.c zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
crc16_sw.c zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
crc32_sw.c lib: crc32_sw: 4 bit at a time implementation 2021-01-24 14:24:48 -05:00
crc32c_sw.c lib: os: Introduce support for CRC32C algorithm 2021-03-02 14:08:30 +01:00
dec.c zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
fdtable.c fdtable: remove remains of switch 2021-06-05 10:38:04 -04:00
heap-validate.c lib: os: heap-validate: Fix wrong chunkid returned by max_chunkid() 2021-06-23 06:18:44 -04:00
heap.c k_heap: Clamp to a minimum heap size 2021-05-20 17:52:21 -04:00
heap.h heap: create unique variable name 2021-05-25 19:06:06 -04:00
hex.c lib: hex: Remove constant expression 2020-09-02 13:45:50 -04:00
json.c misc: Replace assert include and calls by sys/__assert.h equivalent 2020-10-02 11:42:40 +02:00
mpsc_pbuf.c lib: remove redundant check for null 2021-05-26 08:29:20 -05:00
mutex.c lib: os: Simplify z_impl_z_sys_mutex_kernel_unlock 2021-03-10 05:42:06 -05:00
notify.c lib: os: assign sys_notify callback default to NULL... 2021-04-29 07:16:37 -04:00
onoff.c lib: os: add final else where missing in onoff, p4wq, sem 2021-04-28 20:28:19 -04:00
p4wq.c lib: os: add braces to 'if' statements 2021-06-04 16:20:44 -05:00
printk.c logging: Adapt logger to support both versions 2021-04-19 10:59:23 -04:00
rb.c lib: rb: Fix violations to rule 12.1 2021-04-20 15:50:49 -04:00
reboot.c lib: os: reboot: misc cleanup 2021-04-28 20:34:00 -04:00
ring_buffer.c sys: ring_buffer: allow NULL data buffers 2021-04-09 13:19:30 +02:00
sem.c lib: os: add final else where missing in onoff, p4wq, sem 2021-04-28 20:28:19 -04:00
thread_entry.c
timeutil.c lib/timeutil: add utilities to manage local/reference clock alignment 2021-01-20 16:38:56 -05:00
user_work.c kernel: provide functional equivalent to old userspace work queue API 2021-03-03 20:06:00 -05:00