[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <s5hpowoniih.wl-tiwai@suse.de>
Date: Tue, 26 Jan 2016 22:22:14 +0100
From: Takashi Iwai <tiwai@...e.de>
To: Stephen Rothwell <sfr@...b.auug.org.au>
Cc: Mark Brown <broonie@...nel.org>,
Sudip Mukherjee <sudipm.mukherjee@...il.com>,
Vinod Koul <vinod.koul@...el.com>,
Andrew Morton <akpm@...ux-foundation.org>,
linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>,
Michael Ellerman <mpe@...erman.id.au>
Subject: Re: linux-next: build failure after merge of the akpm tree
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@...e.de> wrote:
> >
> > From: Takashi Iwai <tiwai@...e.de>
> > 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@...e.de>
> > ---
> > 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
Powered by blists - more mailing lists