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.
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -407,8 +407,9 @@ struct snd_pcm_status { · 406 unmodified lines | ||
| 407 | 407 | snd_pcm_uframes_t avail_max; /* max frames available on hw since last status */ |
| 408 | 408 | snd_pcm_uframes_t overrange; /* count of ADC (capture) overrange detections from last status */ |
| 409 | 409 | snd_pcm_state_t suspended_state; /* suspended stream state */ |
| 410 | + __u32 reserved_alignment; /* must be filled with zero */ | |
| 410 | 411 | struct timespec audio_tstamp; /* from sample counter or wall clock */ |
| 411 | − unsigned char reserved[60-sizeof(struct timespec)]; /* must be filled with zero */ | |
| 412 | + unsigned char reserved[56-sizeof(struct timespec)]; /* must be filled with zero */ | |
| 412 | 413 | }; |
| 413 | 414 | |
| 414 | 415 | struct snd_pcm_mmap_status { |