Subject: CVE-2021-47511: ALSA: pcm: oss: Fix negative period/buffer sizes

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

ALSA: pcm: oss: Fix negative period/buffer sizes

The period size calculation in OSS layer may receive a negative value
as an error, but the code there assumes only the positive values and
handle them with size_t.  Due to that, a too big value may be passed
to the lower layers.

This patch changes the code to handle with ssize_t and adds the proper
error checks appropriately.

The Linux kernel CVE team has assigned CVE-2021-47511 to this issue.

Affected and fixed versions
===========================

	Fixed in 4.4.295 with commit be8869d38859
	Fixed in 4.9.293 with commit 502e1146873d
	Fixed in 4.14.258 with commit 8af815ab052e
	Fixed in 4.19.221 with commit f96c0959c1ee
	Fixed in 5.4.165 with commit f12c8a7515f6
	Fixed in 5.10.85 with commit 02b2b691b77c
	Fixed in 5.15.8 with commit 00a860678098
	Fixed in 5.16 with commit 9d2479c96087

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2021-47511
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	sound/core/oss/pcm_oss.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/be8869d388593e57223ad39297c8e54be632f2f2
	https://git.kernel.org/stable/c/502e1146873d870f87da3b8f93d6bf2de5f38d0c
	https://git.kernel.org/stable/c/8af815ab052eaf74addbbfb556d63ce2137c0e1b
	https://git.kernel.org/stable/c/f96c0959c1ee92adc911c10d6ec209af50105049
	https://git.kernel.org/stable/c/f12c8a7515f641885677960af450082569a87243
	https://git.kernel.org/stable/c/02b2b691b77cd7b951fa7b6c9d44d4e472cdc823
	https://git.kernel.org/stable/c/00a860678098fcd9fa8db2b5fb9d2ddf4776d4cc
	https://git.kernel.org/stable/c/9d2479c960875ca1239bcb899f386970c13d9cfe