diff mbox series

ALSA: intel_hdmi: Fix reference to PCM buffer address

Message ID 20220302074241.30469-1-nizhen@uniontech.com
State Accepted
Commit 0aa6b294b312d9710804679abd2c0c8ca52cc2bc
Headers show
Series ALSA: intel_hdmi: Fix reference to PCM buffer address | expand

Commit Message

Zhen Ni March 2, 2022, 7:42 a.m. UTC
PCM buffers might be allocated dynamically when the buffer
preallocation failed or a larger buffer is requested, and it's not
guaranteed that substream->dma_buffer points to the actually used
buffer.  The driver needs to refer to substream->runtime->dma_addr
instead for the buffer address.

Signed-off-by: Zhen Ni <nizhen@uniontech.com>
---
 sound/x86/intel_hdmi_audio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Takashi Iwai March 2, 2022, 8:27 a.m. UTC | #1
On Wed, 02 Mar 2022 08:42:41 +0100,
Zhen Ni wrote:
> 
> PCM buffers might be allocated dynamically when the buffer
> preallocation failed or a larger buffer is requested, and it's not
> guaranteed that substream->dma_buffer points to the actually used
> buffer.  The driver needs to refer to substream->runtime->dma_addr
> instead for the buffer address.
> 
> Signed-off-by: Zhen Ni <nizhen@uniontech.com>

Thanks, applied now with Cc-to-stable.

I guess the had_pcm_mmap() can be dropped completely and replaced with
the standard mmap helper, as what we really want is rather wc.
But it can be done for 5.18.


Takashi
diff mbox series

Patch

diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c
index 1c94eaff1931..4a3ff6468aa7 100644
--- a/sound/x86/intel_hdmi_audio.c
+++ b/sound/x86/intel_hdmi_audio.c
@@ -1261,7 +1261,7 @@  static int had_pcm_mmap(struct snd_pcm_substream *substream,
 {
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 	return remap_pfn_range(vma, vma->vm_start,
-			substream->dma_buffer.addr >> PAGE_SHIFT,
+			substream->runtime->dma_addr >> PAGE_SHIFT,
 			vma->vm_end - vma->vm_start, vma->vm_page_prot);
 }