From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753399AbcBAKhD (ORCPT ); Mon, 1 Feb 2016 05:37:03 -0500 Received: from mx2.suse.de ([195.135.220.15]:44962 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752956AbcBAKhB (ORCPT ); Mon, 1 Feb 2016 05:37:01 -0500 Date: Mon, 01 Feb 2016 11:36:59 +0100 Message-ID: From: Takashi Iwai To: "Dmitry Vyukov" Cc: , "Jaroslav Kysela" , "LKML" , "Alexander Potapenko" , "Kostya Serebryany" , "syzkaller" , "Sasha Levin" Subject: Re: sound: WARNING in snd_rawmidi_kernel_write1 In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/24.5 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 01 Feb 2016 11:15:08 +0100, Dmitry Vyukov wrote: > > Hello, > > The following program triggers WARNING in snd_rawmidi_kernel_write1: > > // autogenerated by syzkaller (http://github.com/google/syzkaller) > #include > #include > #include > #include > #include > > int main() > { > int fd; > struct iovec iov; > > fd = open("/dev/snd/midiC3D0", O_RDWR); What is the 3rd device? Please show /proc/asound/cards content. > iov.iov_base = ""; > iov.iov_len = 0; > writev(fd, &iov, 1); > return 0; > } > > > ------------[ cut here ]------------ > WARNING: CPU: 1 PID: 27775 at sound/core/rawmidi.c:1181 The fix is easy, just remove snd_BUG_ON() like below. thanks, Takashi --- diff --git a/sound/core/rawmidi.c b/sound/core/rawmidi.c index a7759846fbaa..f75d1656272c 100644 --- a/sound/core/rawmidi.c +++ b/sound/core/rawmidi.c @@ -1178,7 +1178,7 @@ static long snd_rawmidi_kernel_write1(struct snd_rawmidi_substream *substream, long count1, result; struct snd_rawmidi_runtime *runtime = substream->runtime; - if (snd_BUG_ON(!kernelbuf && !userbuf)) + if (!kernelbuf && !userbuf) return -EINVAL; if (snd_BUG_ON(!runtime->buffer)) return -EINVAL;