On Tue, 26 Jan 2016 21:51:30 +0100, Stephen Rothwell wrote: > > Hi Takashi, > > On Mon, 25 Jan 2016 14:45:55 +0100 Takashi Iwai <tiwai@xxxxxxx> wrote: > > > > From: Takashi Iwai <tiwai@xxxxxxx> > > Subject: [PATCH v2] ALSA: compress: Disable GET_CODEC_CAPS ioctl for some > > architectures > > > > Some architectures like PowerPC can handle the maximum struct size in > > an ioctl only up to 13 bits, and struct snd_compr_codec_caps used by > > SNDRV_COMPRESS_GET_CODEC_CAPS ioctl overflows this limit. This > > problem was revealed recently by a powerpc change, as it's now treated > > as a fatal build error. > > > > This patch is a workaround for that: for architectures with less than > > 14 bit ioctl struct size, get rid of the handling of the relevant > > ioctl. We should provide an alternative equivalent ioctl code later, > > but for now just paper over it. Luckily, the compress API hasn't been > > used on such architectures, so the impact must be effectively zero. > > > > Signed-off-by: Takashi Iwai <tiwai@xxxxxxx> > > --- > > sound/core/compress_offload.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c > > index 18b8dc45bb8f..0609e618107a 100644 > > --- a/sound/core/compress_offload.c > > +++ b/sound/core/compress_offload.c > > @@ -46,6 +46,13 @@ > > #include <sound/compress_offload.h> > > #include <sound/compress_driver.h> > > > > +/* FIXME: struct snd_compr_codec_caps overflows the ioctl bit size for some > > + * architectures, so we need to disable the relevant ioctls. > > + */ > > +#if _IOC_SIZEBITS < 14 > > +#define COMPR_CODEC_CAPS_OVERFLOW > > +#endif > > + > > /* TODO: > > * - add substream support for multiple devices in case of > > * SND_DYNAMIC_MINORS is not used > > @@ -440,6 +447,7 @@ out: > > return retval; > > } > > > > +#ifndef COMPR_CODEC_CAPS_OVERFLOW > > static int > > snd_compr_get_codec_caps(struct snd_compr_stream *stream, unsigned long arg) > > { > > @@ -463,6 +471,7 @@ out: > > kfree(caps); > > return retval; > > } > > +#endif /* !COMPR_CODEC_CAPS_OVERFLOW */ > > > > /* revisit this with snd_pcm_preallocate_xxx */ > > static int snd_compr_allocate_buffer(struct snd_compr_stream *stream, > > @@ -801,9 +810,11 @@ static long snd_compr_ioctl(struct file *f, unsigned int cmd, unsigned long arg) > > case _IOC_NR(SNDRV_COMPRESS_GET_CAPS): > > retval = snd_compr_get_caps(stream, arg); > > break; > > +#ifndef COMPR_CODEC_CAPS_OVERFLOW > > case _IOC_NR(SNDRV_COMPRESS_GET_CODEC_CAPS): > > retval = snd_compr_get_codec_caps(stream, arg); > > break; > > +#endif > > case _IOC_NR(SNDRV_COMPRESS_SET_PARAMS): > > retval = snd_compr_set_params(stream, arg); > > break; > > -- > > 2.7.0 > > I have replaced my other patch in my fixes tree until someone gets this > patch to Linus. I've merged this to for-linus branch, so it'll be included in the next pull request. thanks, Takashi -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html