diff options
author | John Keeping <john@metanate.com> | 2022-01-04 21:32:42 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-01-06 17:28:45 +0300 |
commit | f2f69bf65df12176843ca11eab99949ba69e128b (patch) | |
tree | ca2ae3749129df4f13c656b7ba24b1390e0685b5 /.clang-format | |
parent | 92ef98a4caacad6d4a1490dda45d81ae5ccf5bc9 (diff) | |
download | linux-f2f69bf65df12176843ca11eab99949ba69e128b.tar.xz |
usb: gadget: u_audio: fix calculations for small bInterval
If bInterval is 1, then p_interval is 8000 and p_interval_mil is 8E9,
which is too big for a 32-bit value. While the storage is indeed
64-bit, this value is used as the divisor in do_div() which will
truncate it into a uint32_t leading to incorrect calculated values.
Switch back to keeping the base value in struct snd_uac_chip which fits
easily into an int, meaning that the division can be done in two steps
with the divisor fitting safely into a uint32_t on both steps.
Fixes: 6fec018a7e70 ("usb: gadget: u_audio.c: Adding Playback Pitch ctl for sync playback")
Tested-by: Pavel Hofman <pavel.hofman@ivitera.com>
Signed-off-by: John Keeping <john@metanate.com>
Link: https://lore.kernel.org/r/20220104183243.718258-1-john@metanate.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to '.clang-format')
0 files changed, 0 insertions, 0 deletions