- backport fixes from upstream tree: 0031-pcm-support-for-audio-timestamps.patch 0032-pcm-fix-64-bit-SNDRV_PCM_IOCTL_STATUS-ABI-breakage.patch 0033-PCM-Fix-memory-leak-for-pcm-empty-and-asym-plugins.patch 0034-Reduce-compilation-warnings.patch 0035-PCM-Avoid-busy-loop-in-snd_pcm_write_areas-with-rate.patch OBS-URL: https://build.opensuse.org/request/show/141190 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa?expand=0&rev=115
40 lines
1.6 KiB
Diff
40 lines
1.6 KiB
Diff
From 2b49df0c554cb9c7fc717dcf82d1b8f5310eef62 Mon Sep 17 00:00:00 2001
|
|
From: Clemens Ladisch <clemens@ladisch.de>
|
|
Date: Sun, 28 Oct 2012 12:30:29 +0100
|
|
Subject: [PATCH 32/35] pcm: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage
|
|
|
|
Commit cf40ea169aad (pcm: support for audio timestamps) added the new
|
|
audio_tstamp field to struct sndrv_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>
|
|
---
|
|
include/sound/asound.h | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/include/sound/asound.h b/include/sound/asound.h
|
|
index 16d03e8..8fdad91 100644
|
|
--- a/include/sound/asound.h
|
|
+++ b/include/sound/asound.h
|
|
@@ -427,8 +427,9 @@ struct sndrv_pcm_status {
|
|
sndrv_pcm_uframes_t avail_max; /* max frames available on hw since last status */
|
|
sndrv_pcm_uframes_t overrange; /* count of ADC (capture) overrange detections from last status */
|
|
int suspended_state; /* suspended stream state */
|
|
+ u_int32_t reserved_alignment; /* must be filled with zero */
|
|
struct timespec audio_tstamp; /* from sample counter or wall clock */
|
|
- unsigned char reserved[60-sizeof(struct timespec)]; /* must be filled with zero */
|
|
+ unsigned char reserved[56-sizeof(struct timespec)]; /* must be filled with zero */
|
|
};
|
|
|
|
struct sndrv_pcm_mmap_status {
|
|
--
|
|
1.8.0
|
|
|