https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79944

--- Comment #4 from Dmitry Vyukov <dvyukov at google dot com> ---
Attached second minimized reproducer.
Build it with:
gcc dmaengine2.c -fsanitize=address -O2 -lasan -g

It produces:

==57662==ERROR: AddressSanitizer: unknown-crash on address 0x000000601321 at pc
0x000000400729 bp 0x7ffdd78835b0 sp 0x7ffdd78835a8
WRITE of size 8 at 0x000000601321 thread T0
    #0 0x400728 in clear_bit /tmp/dmaengine2.c:10
    #1 0x400728 in dma_channel_table_init /tmp/dmaengine2.c:130
    #2 0x400728 in main /tmp/dmaengine2.c:207

On the following line:

  __atomic_fetch_and((char *)addr + (nr / 8), (char)(~(1 << (nr % 8))), 0);

This is access of size 1, not 8.

Reply via email to