On 11/6/25 18:55, Zhang Chujun wrote:
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.


Applied to linux-kselftest next for Linux 6.19-rc1

thanks,
-- Shuah

Reply via email to