ALSA: core: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage
Commit 4eeaaeaea (ALSA: core: add hooks for audio timestamps) added the
new audio_tstamp field to struct snd_pcm_status. However, struct
timespec requires 64-bit alignment, so the 64-bit compiler would insert
32 bits of padding before this field, which broke SNDRV_PCM_IOCTL_STATUS
with error messages like this:
kernel: unknown ioctl = 0x80984120
To solve this, insert the padding explicitly so that it can be taken
into account when calculating the ABI structure size.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/sound/core/pcm_compat.c b/sound/core/pcm_compat.c
index af2a3fd..af49721 100644
--- a/sound/core/pcm_compat.c
+++ b/sound/core/pcm_compat.c
@@ -190,8 +190,9 @@
u32 avail_max;
u32 overrange;
s32 suspended_state;
+ u32 reserved_alignment;
struct compat_timespec audio_tstamp;
- unsigned char reserved[60-sizeof(struct compat_timespec)];
+ unsigned char reserved[56-sizeof(struct compat_timespec)];
} __attribute__((packed));