diff options
author | Takashi Iwai <tiwai@suse.de> | 2015-03-05 13:03:28 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-03-05 13:03:28 +0100 |
commit | f44f07cf3910f84b15b2a78c4933d5946bf409cf (patch) | |
tree | 2c6fdb326267aca7379e5ad2667a7cb3f48318a5 | |
parent | 096a020a9ef5c947577d3b57199bfc9b7e686b49 (diff) | |
download | linux-stable-f44f07cf3910f84b15b2a78c4933d5946bf409cf.tar.gz linux-stable-f44f07cf3910f84b15b2a78c4933d5946bf409cf.tar.bz2 linux-stable-f44f07cf3910f84b15b2a78c4933d5946bf409cf.zip |
ALSA: line6: Clamp values correctly
The usages of clamp() macro in sound/usb/line6/playback.c are just
wrong, the low and high values are swapped.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/usb/line6/playback.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sound/usb/line6/playback.c b/sound/usb/line6/playback.c index 05dee690f487..97ed593f6010 100644 --- a/sound/usb/line6/playback.c +++ b/sound/usb/line6/playback.c @@ -39,7 +39,7 @@ static void change_volume(struct urb *urb_out, int volume[], for (; p < buf_end; ++p) { short pv = le16_to_cpu(*p); int val = (pv * volume[chn & 1]) >> 8; - pv = clamp(val, 0x7fff, -0x8000); + pv = clamp(val, -0x8000, 0x7fff); *p = cpu_to_le16(pv); ++chn; } @@ -54,7 +54,7 @@ static void change_volume(struct urb *urb_out, int volume[], val = p[0] + (p[1] << 8) + ((signed char)p[2] << 16); val = (val * volume[chn & 1]) >> 8; - val = clamp(val, 0x7fffff, -0x800000); + val = clamp(val, -0x800000, 0x7fffff); p[0] = val; p[1] = val >> 8; p[2] = val >> 16; @@ -126,7 +126,7 @@ static void add_monitor_signal(struct urb *urb_out, unsigned char *signal, short pov = le16_to_cpu(*po); short piv = le16_to_cpu(*pi); int val = pov + ((piv * volume) >> 8); - pov = clamp(val, 0x7fff, -0x8000); + pov = clamp(val, -0x8000, 0x7fff); *po = cpu_to_le16(pov); } } |