diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2023-12-28 14:03:50 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2023-12-28 14:12:27 +0100 |
| commit | 3ddf02ddcb9f04a92b272383a252a8fe350663ab (patch) | |
| tree | 16a943b7894b943dd12dc047e320c1ebb4e80fa8 /validation/reassoc | |
| parent | adceff0ab6e3d8bf43de52e2c2fbebf27db30deb (diff) | |
| download | sparse-dev-3ddf02ddcb9f04a92b272383a252a8fe350663ab.tar.gz | |
reassoc: fix infinite loop during reassociation
The infinite loop is triggered by some fairly simple code on Zephyr and is
caused by some exchange of pseudos done without checking the canonical order.
Fix this by adding the check for the canonical order.
Also use can_move_to() instead of the simpler one_use() to check the dominance
of the moved pseudos.
Link: https://github.com/zephyrproject-rtos/zephyr/issues/63417
Link: https://lore.kernel.org/linux-sparse/AD16C022-C5F3-4DA2-A1A0-775E4C95A7A1@intel.com/
Reported-by: Marc Herbert <marc.herbert@intel.com>
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/reassoc')
| -rw-r--r-- | validation/reassoc/bug-zephyr-63417.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/validation/reassoc/bug-zephyr-63417.c b/validation/reassoc/bug-zephyr-63417.c new file mode 100644 index 00000000..5db821d3 --- /dev/null +++ b/validation/reassoc/bug-zephyr-63417.c @@ -0,0 +1,13 @@ +extern char __tdata_size[]; +extern char __tdata_align[]; + +unsigned long z_tls_data_size(void); +unsigned long z_tls_data_size(void) +{ + return ((unsigned long)__tdata_size) + ((unsigned long)__tdata_align - 1); +} + +/* + * check-name: bug-zephyr-63417 + * check-timeout: + */ |
