Skip to contentSkip to conversation

FAILED: patch "[PATCH] ALSA: pcm: Call substream ack() method upon compat mmap" failed to apply to 5.4-stable tree

PATCH [email protected] 3 participants 4 messages Jul 26, 2021 – Jul 30, 2021 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 2e2832562c877e6530b8480982d99a4ff90c6777 Mon Sep 17 00:00:00 2001
From: Alan Young <[email protected]>
Date: Fri, 9 Jul 2021 09:48:54 +0100
Subject: [PATCH] ALSA: pcm: Call substream ack() method upon compat mmap
commit

If a 32-bit application is being used with a 64-bit kernel and is using the mmap mechanism to write data, then the SNDRV_PCM_IOCTL_SYNC_PTR ioctl results in calling snd_pcm_ioctl_sync_ptr_compat(). Make this use pcm_lib_apply_appl_ptr() so that the substream's ack() method, if defined, is called.

The snd_pcm_sync_ptr() function, used in the 64-bit ioctl case, already uses snd_pcm_ioctl_sync_ptr_compat().

Fixes 9027c4639ef1 ("ALSA: pcm: Call ack() whenever appl_ptr is updated")
sound/core/pcm_native.c +8 -3
index 14e32825c339..c88c4316c417 100644
@@ -3063,9 +3063,14 @@ static int snd_pcm_ioctl_sync_ptr_compat(struct snd_pcm_substream *substream,
 		boundary = 0x7fffffff;
 	snd_pcm_stream_lock_irq(substream);
 	/* FIXME: we should consider the boundary for the sync from app */
-	if (!(sflags & SNDRV_PCM_SYNC_PTR_APPL))
-		control->appl_ptr = scontrol.appl_ptr;
-	else
+	if (!(sflags & SNDRV_PCM_SYNC_PTR_APPL)) {
+		err = pcm_lib_apply_appl_ptr(substream,
+				scontrol.appl_ptr);
+		if (err < 0) {
+			snd_pcm_stream_unlock_irq(substream);
+			return err;
+		}
+	} else
 		scontrol.appl_ptr = control->appl_ptr % boundary;
 	if (!(sflags & SNDRV_PCM_SYNC_PTR_AVAIL_MIN))
 		control->avail_min = scontrol.avail_min;
author maintainer
#2 lore raw
In reply to a message not in the archive
Quoted 3 lines · Alan Young

This commit is not applicable before the 64-bit time_t in user space with 32-bit compatibility changes introduces by 80fe7430c7085951d1246d83f638cc17e6c0be36 in 5.6.

That is odd, as that is not what you wrote in the patch itself:

Quoted 1 line
    Fixes: 9027c4639ef1 ("ALSA: pcm: Call ack() whenever appl_ptr is updated")

So is the Fixes: tag here incorrect?

thanks,

greg k-h

#3 lore raw
Quoted 4 lines · Greg KH
Quoted 3 lines · Alan Young

This commit is not applicable before the 64-bit time_t in user space with 32-bit compatibility changes introduces by 80fe7430c7085951d1246d83f638cc17e6c0be36 in 5.6.

Quoted 8 lines

That is odd, as that is not what you wrote in the patch itself:

Quoted 1 line
     Fixes: 9027c4639ef1 ("ALSA: pcm: Call ack() whenever appl_ptr is updated")

So is the Fixes: tag here incorrect?

thanks,

greg k-h

I did not add the Fixes tag. I guess Takashi Iwai did.

I think that 9027c4639ef1 added some functionality that was broken by 80fe7430c7085951 and which my patch corrects. So the Fixes: 9027c4639ef1 tag refers to the actual functionality, not the breaking of it.

I have no idea if that is the correct usage of the Fixes tag which, as I said, I did not add.

Alan.

#4 lore raw
Quoted 17 lines · Alan Young
Quoted 4 lines · Greg KH
Quoted 3 lines · Alan Young

This commit is not applicable before the 64-bit time_t in user space with 32-bit compatibility changes introduces by 80fe7430c7085951d1246d83f638cc17e6c0be36 in 5.6.

Quoted 8 lines

That is odd, as that is not what you wrote in the patch itself:

Quoted 1 line
     Fixes: 9027c4639ef1 ("ALSA: pcm: Call ack() whenever appl_ptr is updated")

So is the Fixes: tag here incorrect?

thanks,

greg k-h

I did not add the Fixes tag. I guess Takashi Iwai did.

Quoted 7 lines

I think that 9027c4639ef1 added some functionality that was broken by 80fe7430c7085951 and which my patch corrects. So the Fixes:
9027c4639ef1 tag refers to the actual functionality, not the breaking of it.

I have no idea if that is the correct usage of the Fixes tag which, as I said, I did not add.

Yeah, sorry for the mess, I was confused that the function already missed that point. But the patch can't be applied in anyway, so it can't go wrong at least :)

Takashi