On Tue, Nov 05, 2025 at 08:30:00PM +0800, Zhang Chujun wrote:
The printf statement attempts to print the DMA direction string using the syntax 'dir[directions]', which is an invalid array access. The variable 'dir' is an integer, and 'directions' is a char pointer array. This incorrect syntax should be 'directions[dir]', using 'dir' as the index into the 'directions' array. Fix this by correcting the array access from 'dir[directions]' to 'directions[dir]'.
Hi Shuah,
Thanks for your patience.
I found this issue while carefully reading the code in `dma_map_benchmark.c`. The expression `dir[directions]` stood out because `dir` is an integer (enum or int), while `directions` is a string array ��� so using `dir` as the index into `directions` is the correct form. Although C allows `a[b]` and `b[a]` syntactically due to pointer arithmetic, in this context `dir[directions]` is logically wrong and would print an unexpected (likely garbage) string, since it treats the address of the string array as an array indexed by a small integer.
The compiler doesn���t warn because `dir[directions]` is technically valid C (equivalent to `*(directions + dir)`), but semantically it���s backwards and breaks the intended output.
Sorry for sending the patch twice, I���ll make sure to follow the proper mailing list guidelines going forward.
Best regards, Zhang Chujun