Description
In the Linux kernel, the following vulnerability has been resolved: ALSA: usb-audio: Fix potential overflow of PCM transfer buffer The PCM stream data in USB-audio driver is transferred over USB URB packet buffers, and each packet size is determined dynamically. The packet sizes are limited by some factors such as wMaxPacketSize USB descriptor. OTOH, in the current code, the actually used packet sizes are determined only by the rate and the PPS, which may be bigger than the size limit above. This results in a buffer overflow, as reported by syzbot. Basically when the limit is smaller than the calculated packet size, it implies that something is wrong, most likely a weird USB descriptor. So the best option would be just to return an error at the parameter setup time before doing any further operations. This patch introduces such a sanity check, and returns -EINVAL when the packet size is greater than maxpacksize. The comparison with ep->packsize[1] alone should suffice since it's always equal or greater than ep->packsize[0].
Product status
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 6a5da3fa80affc948923f20a4e086177f505e86e
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 217d47255a2ec8b246f2725f5db9ac3f1d4109d7
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before ef592bf2232a2daa9fffa8881881fc9957ea56e9
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before ece3b981bb6620e47fac826a2156c090b1a936a0
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 98e9d5e33bda8db875cc1a4fe99c192658e45ab6
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before d2c04f20ccc6c0d219e6d3038bab45bc66a178ad
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 05a1fc5efdd8560f34a3af39c9cf1e1526cc3ddf
5.10.247 (semver)
5.15.197 (semver)
6.1.159 (semver)
6.6.117 (semver)
6.12.59 (semver)
6.17.9 (semver)
6.18 (original_commit_for_fix)
References
git.kernel.org/...c/6a5da3fa80affc948923f20a4e086177f505e86e
git.kernel.org/...c/217d47255a2ec8b246f2725f5db9ac3f1d4109d7
git.kernel.org/...c/ef592bf2232a2daa9fffa8881881fc9957ea56e9
git.kernel.org/...c/ece3b981bb6620e47fac826a2156c090b1a936a0
git.kernel.org/...c/98e9d5e33bda8db875cc1a4fe99c192658e45ab6
git.kernel.org/...c/d2c04f20ccc6c0d219e6d3038bab45bc66a178ad
git.kernel.org/...c/05a1fc5efdd8560f34a3af39c9cf1e1526cc3ddf