| From 3d4e8303f2c747c8540a0a0126d0151514f6468b Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Tue, 21 Nov 2017 16:36:11 +0100 |
| Subject: ALSA: timer: Remove kernel warning at compat ioctl error paths |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit 3d4e8303f2c747c8540a0a0126d0151514f6468b upstream. |
| |
| Some timer compat ioctls have NULL checks of timer instance with |
| snd_BUG_ON() that bring up WARN_ON() when the debug option is set. |
| Actually the condition can be met in the normal situation and it's |
| confusing and bad to spew kernel warnings with stack trace there. |
| Let's remove snd_BUG_ON() invocation and replace with the simple |
| checks. Also, correct the error code to EBADFD to follow the native |
| ioctl error handling. |
| |
| Reported-by: syzbot <syzkaller@googlegroups.com> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/core/timer_compat.c | 12 ++++++------ |
| 1 file changed, 6 insertions(+), 6 deletions(-) |
| |
| --- a/sound/core/timer_compat.c |
| +++ b/sound/core/timer_compat.c |
| @@ -40,11 +40,11 @@ static int snd_timer_user_info_compat(st |
| struct snd_timer *t; |
| |
| tu = file->private_data; |
| - if (snd_BUG_ON(!tu->timeri)) |
| - return -ENXIO; |
| + if (!tu->timeri) |
| + return -EBADFD; |
| t = tu->timeri->timer; |
| - if (snd_BUG_ON(!t)) |
| - return -ENXIO; |
| + if (!t) |
| + return -EBADFD; |
| memset(&info, 0, sizeof(info)); |
| info.card = t->card ? t->card->number : -1; |
| if (t->hw.flags & SNDRV_TIMER_HW_SLAVE) |
| @@ -73,8 +73,8 @@ static int snd_timer_user_status_compat( |
| struct snd_timer_status32 status; |
| |
| tu = file->private_data; |
| - if (snd_BUG_ON(!tu->timeri)) |
| - return -ENXIO; |
| + if (!tu->timeri) |
| + return -EBADFD; |
| memset(&status, 0, sizeof(status)); |
| status.tstamp.tv_sec = tu->tstamp.tv_sec; |
| status.tstamp.tv_nsec = tu->tstamp.tv_nsec; |