CVE-2022-49272

EUVD-2022-54954
In the Linux kernel, the following vulnerability has been resolved:

ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock

syzbot caught a potential deadlock between the PCM
runtime->buffer_mutex and the mm->mmap_lock.  It was brought by the
recent fix to cover the racy read/write and other ioctls, and in that
commit, I overlooked a (hopefully only) corner case that may take the
revert lock, namely, the OSS mmap.  The OSS mmap operation
exceptionally allows to re-configure the parameters inside the OSS
mmap syscall, where mm->mmap_mutex is already held.  Meanwhile, the
copy_from/to_user calls at read/write operations also take the
mm->mmap_lock internally, hence it may lead to a AB/BA deadlock.

A similar problem was already seen in the past and we fixed it with a
refcount (in commit b248371628aa).  The former fix covered only the
call paths with OSS read/write and OSS ioctls, while we need to cover
the concurrent access via both ALSA and OSS APIs now.

This patch addresses the problem above by replacing the buffer_mutex
lock in the read/write operations with a refcount similar as we've
used for OSS.  The new field, runtime->buffer_accessing, keeps the
number of concurrent read/write operations.  Unlike the former
buffer_mutex protection, this protects only around the
copy_from/to_user() calls; the other codes are basically protected by
the PCM stream lock.  The refcount can be a negative, meaning blocked
by the ioctls.  If a negative value is seen, the read/write aborts
with -EBUSY.  In the ioctl side, OTOH, they check this refcount, too,
and set to a negative value for blocking unless it's already being
accessed.
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
5.5 MEDIUM
LOCAL
LOW
LOW
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Base Score
CVSS 3.x
EPSS Score
Percentile: Unknown
Affected Products (NVD)
VendorProductVersion
linuxlinux_kernel
5.10.109
linuxlinux_kernel
5.15.32
linuxlinux_kernel
5.16.18
linuxlinux_kernel
5.17.1
𝑥
= Vulnerable software versions
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
6.1.123-1
fixed
bookworm (security)
6.1.128-1
fixed
bullseye
5.10.223-1
fixed
bullseye (security)
5.10.234-1
fixed
sid
6.12.16-1
fixed
trixie
6.12.12-1
fixed
openSUSE logo
openSUSE / SLES Releases
openSUSE Product
Release
cluster-md-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
dlm-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
gfs2-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-64kb
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-default-base
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP2
5.3.18-150200.24.224.1.150200.9.120.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1.150300.18.120.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1.150400.24.78.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1.150500.6.47.1
fixed
kernel-default-man
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
kernel-docs
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-macros
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-obs-build
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-preempt
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
kernel-source
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-syms
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
kernel-zfcpdump
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
ocfs2-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
reiserfs-kmp-default
suse enterprise server 15 SP2
5.3.18-150200.24.224.1
fixed
suse enterprise server 15 SP3
5.3.18-150300.59.201.1
fixed
suse enterprise server 15 SP4
5.14.21-150400.24.158.1
fixed
suse enterprise server 15 SP5
5.14.21-150500.55.100.1
fixed
Red Hat logo
Red Hat Enterprise Linux Releases
Red Hat Product
Release
bpftool
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-abi-stablelists
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-core
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-debug
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-debug-core
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-debug-devel
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-debug-devel-matched
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-debug-modules
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-debug-modules-extra
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-devel
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-devel-matched
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-doc
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-modules
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-modules-extra
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-tools
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-tools-libs
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-tools-libs-devel
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-zfcpdump
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-zfcpdump-core
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-zfcpdump-devel
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-zfcpdump-devel-matched
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-zfcpdump-modules
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
kernel-zfcpdump-modules-extra
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
perf
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed
python3-perf
RHEL 8
0:4.18.0-425.3.1.el8
fixed
RHEL 9
0:5.14.0-162.6.1.el9_1
fixed