From: Jens Axboe <axboe@kernel.dk>
To: Takashi Iwai <tiwai@suse.de>
Cc: Eldad Zack <eldad@fogrefinery.com>,
perex@perex.cz, alsa-devel@alsa-project.org,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: Oops in sound/usb/pcm.c:match_endpoint_audioformats() in current -git
Date: Thu, 10 Jan 2013 21:26:16 +0100 [thread overview]
Message-ID: <50EF23E8.1070202@kernel.dk> (raw)
In-Reply-To: <s5hehhskcya.wl%tiwai@suse.de>
On 2013-01-10 21:19, Takashi Iwai wrote:
> At Thu, 10 Jan 2013 20:45:02 +0100 (CET),
> Eldad Zack wrote:
>>
>>
>> On Thu, 10 Jan 2013, Takashi Iwai wrote:
>>
>>> At Thu, 10 Jan 2013 13:49:22 +0100,
>>> Jens Axboe wrote:
>>>>
>>>> Here it is, it's from the one introducing the audioformat lookup.
>>>> Confirmed that 3.8-rc3 with this backed out works fine, too. So should
>>>> be fairly confident in that result.
>>
>>> From: Takashi Iwai <tiwai@suse.de>
>>> Subject: [PATCH] ALSA: usb-audio: Fix NULL dereference by access to
>>> non-existing substream
>>>
>>> The commit [0d9741c0: ALSA: usb-audio: sync ep init fix for
>>> audioformat mismatch] introduced the correction of parameters to be
>>> set for sync EP. But since the new code assumes that the sync EP is
>>> always paired with the data EP of another direction, it triggers Oops
>>> when a device only with a single direction is used.
>>
>> Yes - sorry, I didn't consider this at all.
>>
>>> This patch adds a proper check of sync EP type and the presence of the
>>> paired substream for avoiding the crash.
>>>
>>> Reported-by: Jens Axboe <axboe@kernel.dk>
>>> Signed-off-by: Takashi Iwai <tiwai@suse.de>
>>> ---
>>> sound/usb/pcm.c | 11 +++++++++++
>>> 1 file changed, 11 insertions(+)
>>>
>>> diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
>>> index c659310..21c0001 100644
>>> --- a/sound/usb/pcm.c
>>> +++ b/sound/usb/pcm.c
>>> @@ -511,6 +511,17 @@ static int configure_sync_endpoint(struct snd_usb_substream *subs)
>>> struct snd_usb_substream *sync_subs =
>>> &subs->stream->substream[subs->direction ^ 1];
>>>
>>> + if (subs->sync_endpoint->type != SND_USB_ENDPOINT_TYPE_DATA ||
>>> + !subs->stream) {
>>> + ret = snd_usb_endpoint_set_params(subs->sync_endpoint,
>>> + subs->pcm_format,
>>> + subs->channels,
>>> + subs->period_bytes,
>>> + subs->cur_rate,
>>> + subs->cur_audiofmt,
>>> + NULL);
>>> + }
>>> +
>>
>> I think you want to return here, no?
>
> Ah, yes, good catch. It was dropped during rebasing and rewriting.
> Below is the revised patch.
Thanks, I'll give it a go and report back.
--
Jens Axboe
next prev parent reply other threads:[~2013-01-10 20:26 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <50EE7A94.60409@kernel.dk>
2013-01-10 10:21 ` Oops in sound/usb/pcm.c:match_endpoint_audioformats() in current -git Takashi Iwai
2013-01-10 12:49 ` Jens Axboe
2013-01-10 13:46 ` Takashi Iwai
2013-01-10 19:45 ` Eldad Zack
2013-01-10 19:45 ` Eldad Zack
2013-01-10 20:19 ` Takashi Iwai
2013-01-10 20:26 ` Jens Axboe [this message]
2013-01-11 7:47 ` Jens Axboe
2013-01-11 10:17 ` Takashi Iwai
2013-01-11 7:48 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50EF23E8.1070202@kernel.dk \
--to=axboe@kernel.dk \
--cc=alsa-devel@alsa-project.org \
--cc=eldad@fogrefinery.com \
--cc=linux-kernel@vger.kernel.org \
--cc=perex@perex.cz \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.