| From 639db596165746ca87bbcb56559b094fd9042890 Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Thu, 12 May 2016 18:04:16 +0200 |
| Subject: ALSA: au88x0: Fix zero clear of stream->resources |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit 639db596165746ca87bbcb56559b094fd9042890 upstream. |
| |
| There are a few calls of memset() to stream->resources, but they all |
| are called in a wrong size, sizeof(unsigned char) * VORTEX_RESOURCE_LAST, |
| while this field is a u32 array. This may leave the memories not |
| zero-cleared. |
| |
| Fix it by replacing them with a simpler sizeof(stream->resources) |
| instead. |
| |
| Reported-by: David Binderman <dcb314@hotmail.com> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/pci/au88x0/au88x0_core.c | 14 +++++--------- |
| 1 file changed, 5 insertions(+), 9 deletions(-) |
| |
| --- a/sound/pci/au88x0/au88x0_core.c |
| +++ b/sound/pci/au88x0/au88x0_core.c |
| @@ -2150,8 +2150,7 @@ vortex_adb_allocroute(vortex_t *vortex, |
| stream->resources, en, |
| VORTEX_RESOURCE_SRC)) < 0) { |
| memset(stream->resources, 0, |
| - sizeof(unsigned char) * |
| - VORTEX_RESOURCE_LAST); |
| + sizeof(stream->resources)); |
| return -EBUSY; |
| } |
| if (stream->type != VORTEX_PCM_A3D) { |
| @@ -2161,7 +2160,7 @@ vortex_adb_allocroute(vortex_t *vortex, |
| VORTEX_RESOURCE_MIXIN)) < 0) { |
| memset(stream->resources, |
| 0, |
| - sizeof(unsigned char) * VORTEX_RESOURCE_LAST); |
| + sizeof(stream->resources)); |
| return -EBUSY; |
| } |
| } |
| @@ -2174,8 +2173,7 @@ vortex_adb_allocroute(vortex_t *vortex, |
| stream->resources, en, |
| VORTEX_RESOURCE_A3D)) < 0) { |
| memset(stream->resources, 0, |
| - sizeof(unsigned char) * |
| - VORTEX_RESOURCE_LAST); |
| + sizeof(stream->resources)); |
| dev_err(vortex->card->dev, |
| "out of A3D sources. Sorry\n"); |
| return -EBUSY; |
| @@ -2289,8 +2287,7 @@ vortex_adb_allocroute(vortex_t *vortex, |
| VORTEX_RESOURCE_MIXOUT)) |
| < 0) { |
| memset(stream->resources, 0, |
| - sizeof(unsigned char) * |
| - VORTEX_RESOURCE_LAST); |
| + sizeof(stream->resources)); |
| return -EBUSY; |
| } |
| if ((src[i] = |
| @@ -2298,8 +2295,7 @@ vortex_adb_allocroute(vortex_t *vortex, |
| stream->resources, en, |
| VORTEX_RESOURCE_SRC)) < 0) { |
| memset(stream->resources, 0, |
| - sizeof(unsigned char) * |
| - VORTEX_RESOURCE_LAST); |
| + sizeof(stream->resources)); |
| return -EBUSY; |
| } |
| } |