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



Reply via email to