Skip to contentSkip to conversation

Patch "ALSA: timer: Fix ioctls for X32 ABI" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Mar 5, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ALSA: timer: Fix ioctls for X32 ABI

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
alsa-timer-fix-ioctls-for-x32-abi.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From b24e7ad1fdc22177eb3e51584e1cfcb45d818488 Mon Sep 17 00:00:00 2001

From: Takashi Iwai <[email protected]>
Date: Sun, 28 Feb 2016 11:41:47 +0100
Subject: ALSA: timer: Fix ioctls for X32 ABI

From: Takashi Iwai <[email protected]>

commit b24e7ad1fdc22177eb3e51584e1cfcb45d818488 upstream.

X32 ABI takes the 64bit timespec, thus the timer user status ioctl becomes incompatible with IA32. This results in NOTTY error when the ioctl is issued.

Meanwhile, this struct in X32 is essentially identical with the one in X86-64, so we can just bypassing to the existing code for this specific compat ioctl.

---
 sound/core/timer_compat.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)
sound/core/timer_compat.c +13 -0
@@ -88,12 +88,21 @@ static int snd_timer_user_status_compat(
 	return 0;
 }
 
+#ifdef CONFIG_X86_X32
+/* X32 ABI has the same struct as x86-64 */
+#define snd_timer_user_status_x32(file, s) \
+	snd_timer_user_status(file, s)
+#endif /* CONFIG_X86_X32 */
+
 /*
  */
 
 enum {
 	SNDRV_TIMER_IOCTL_INFO32 = _IOR('T', 0x11, struct snd_timer_info32),
 	SNDRV_TIMER_IOCTL_STATUS32 = _IOW('T', 0x14, struct snd_timer_status32),
+#ifdef CONFIG_X86_X32
+	SNDRV_TIMER_IOCTL_STATUS_X32 = _IOW('T', 0x14, struct snd_timer_status),
+#endif /* CONFIG_X86_X32 */
 };
 
 static long snd_timer_user_ioctl_compat(struct file *file, unsigned int cmd, unsigned long arg)
@@ -122,6 +131,10 @@ static long snd_timer_user_ioctl_compat(
 		return snd_timer_user_info_compat(file, argp);
 	case SNDRV_TIMER_IOCTL_STATUS32:
 		return snd_timer_user_status_compat(file, argp);
+#ifdef CONFIG_X86_X32
+	case SNDRV_TIMER_IOCTL_STATUS_X32:
+		return snd_timer_user_status_x32(file, argp);
+#endif /* CONFIG_X86_X32 */
 	}
 	return -ENOIOCTLCMD;
 }

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/alsa-hdspm-fix-zero-division.patch queue-4.4/alsa-ctl-fix-ioctls-for-x32-abi.patch queue-4.4/alsa-hdspm-fix-wrong-boolean-ctl-value-accesses.patch queue-4.4/alsa-pcm-fix-ioctls-for-x32-abi.patch queue-4.4/alsa-hdsp-fix-wrong-boolean-ctl-value-accesses.patch queue-4.4/alsa-seq-oss-don-t-drain-at-closing-a-client.patch queue-4.4/alsa-hda-fix-mic-issues-on-acer-aspire-e1-472.patch queue-4.4/alsa-timer-fix-ioctls-for-x32-abi.patch queue-4.4/alsa-usb-audio-add-a-quirk-for-plantronics-da45.patch queue-4.4/alsa-timer-fix-broken-compat-timer-user-status-ioctl.patch queue-4.4/alsa-rawmidi-fix-ioctls-x32-abi.patch