ASoC: loongson: Fix invalid position error in ls_pcm_pointer
The "invalid position" error occurred when the DMA position descriptor
returned an invalid address value (e.g., pos = -
1048838144). This happened
because the `bytes_to_frames()` function returns a signed value, but when
`addr < runtime->dma_addr`, the subtraction produces a negative result that
gets interpreted as a large unsigned integer in comparisons.
when the addr is abnormal, for example,the DMA controller is abnormal in
hardware,x=0 should not be a point(x == runtime->buffer_size),but a range,
which includes the addr address being less than runtime ->dma1-adr, and
the addr exceeding the DMA address range.the value of pos should not better
a negativeļ¼return 0, maybe better.
[ 32.834431][ 2] soc-audio soc-audio: invalid position: , pos = -
1048838144
[ 32.845019][ 2] soc-audio soc-audio: invalid position: , pos = -
1048838144
[ 32.855588][ 2] soc-audio soc-audio: invalid position: , pos = -
1048838144
[ 32.866145][ 2] soc-audio soc-audio: invalid position: , pos = -
1048838144
[ 32.995394][ 2] soc-audio soc-audio: invalid position: , pos = -
1048838144
[ 33.006025][ 2] soc-audio soc-audio: invalid position: , pos = -
1048838144
[ 33.016748][ 2] soc-audio soc-audio: invalid position: , pos = -
1048838144
Signed-off-by: Li Jun <lijun01@kylinos.cn>
[Remove XRUN reporting I'd mistakenly avised adding on prior review -- broonie]
Link: https://patch.msgid.link/20260611010045.3668574-1-lijun01@kylinos.cn
Signed-off-by: Mark Brown <broonie@kernel.org>