Skip to content
Fencer Vulns
no cvss —

CVE-2026-93252 json

ocfs2: fix circular locking dependency in ocfs2_init_acl()

published 2026-09-24 45 d ago modified 2026-10-19 21 d ago also EUVD-2026-86124

cvss
—
not scored
cisa kev
Not listed
not in CISA's catalog
epss
0.2%
EPSS 0.2% chance of exploitation in 30 days, percentile 12%
public exploits
0
none known

Summary

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

ocfs2: fix circular locking dependency in ocfs2_init_acl()

A lockdep warning indicates a circular locking dependency between `&oi->ip_xattr_sem` and `&journal->j_trans_barrier`:

WARNING: possible circular locking dependency detected is trying to acquire lock: (&oi->ip_xattr_sem){++++}-{4:4}, at: ocfs2_init_acl+0x2fd/0x7e0 fs/ocfs2/acl.c:367

but task is already holding lock: (&journal->j_trans_barrier){.+.+}-{4:4}, at: ocfs2_start_trans+0x3ab/0x700 fs/ocfs2/journal.c:369

The deadlock involves two code paths: Path 1 (setxattr) where `ocfs2_xattr_set()` acquires `ip_xattr_sem` (write) and then starts a transaction, which acquires `j_trans_barrier` (read); and Path 2 (mkdir/mknod) where `ocfs2_mknod()` starts a transaction (`j_trans_barrier` read) and then calls `ocfs2_init_acl()`, which attempts to acquire `ip_xattr_sem` (read) on the parent directory to retrieve the default ACL.

Because rw_semaphores are subject to writer priority, a pending writer on `j_trans_barrier` (e.g., the journal commit thread) can cause Path 1 to block, while Path 2 is blocked waiting for Path 1 to release `ip_xattr_sem`.

The patch fixes the lock ordering by precomputing the ACL state before starting the OCFS2 transaction, while preserving POSIX ACL storage semantics and the existing inode/security initialization order. By reading the parent directory's default ACL and preparing the new inode's ACLs outside the transaction, `ip_xattr_sem` is always acquired before `j_trans_barrier`.

`struct ocfs2_acl_state` encapsulates the prepared ACL state, while `ocfs2_acl_init_prepare()` and `ocfs2_acl_init_release()` avoid code duplication between `ocfs2_mknod()` and `ocfs2_init_security_and_acl()`. `ocfs2_calc_xattr_init()` and `ocfs2_init_acl()` use this precomputed state, removing internal `ip_xattr_sem` acquisition and redundant disk reads.

Additionally, remove the `ip_xattr_sem` acquisition from `ocfs2_xattr_set_handle()`. This function is only used while initializing a new inode that has not yet been inserted into the inode hash or attached to a dentry, meaning there is no risk of concurrent access and the lock is unnecessary.

Patch / fix

  • Linux Linux 3.19, 4.5, 4.10, 4.15, 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, 6.18.52, 7.2.6, 7.3
  • linux Debian 12 6.1.190-1
  • linux Debian 13 6.12.111-1
  • linux Debian 14 7.2.6-1
  • linux-6.12 Debian 12 6.12.111-1~deb12u1

debian advisories DEBIAN-CVE-2026-93252

  • linux Ubuntu 22.04 LTS 5.15.0-202.212
  • linux Ubuntu 26.04 LTS 7.0.0-42.42
  • linux-aws Ubuntu 22.04 LTS 5.15.0-1119.126
  • linux-aws Ubuntu 26.04 LTS 7.0.0-1016.17
  • linux-gcp Ubuntu 22.04 LTS 5.15.0-1120.130
  • linux-gcp Ubuntu 26.04 LTS 7.0.0-1016.18
  • linux-gke Ubuntu 22.04 LTS 5.15.0-1115.121
  • linux-ibm Ubuntu 22.04 LTS 5.15.0-1113.117

ubuntu advisories UBUNTU-CVE-2026-93252

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

  • kernel-rt Real Time Module 15 SP7 6.4.0-150700.7.81.1
  • kernel-syms-rt Real Time Module 15 SP7 6.4.0-150700.7.81.1
  • kernel-source-rt Real Time Module 15 SP7 6.4.0-150700.7.81.1
  • kernel-64kb SLE Module for Basesystem 15 SP7 6.4.0-150700.53.87.3
  • kernel-syms SLE Module for Development Tools 15 SP7 6.4.0-150700.53.87.1
  • kernel-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.53.87.3
  • kernel-source SLE Module for Development Tools 15 SP7, SLE Module for Basesystem 15 SP7 6.4.0-150700.53.87.3
  • kernel-default SLE Workstation Extension 15 SP7, SLE Module for Legacy 15 SP7, SLE Module for Basesystem 15 SP7 +2 more 6.4.0-150700.53.87.3

suse advisories SUSE-SU-2026:4940-1SUSE-SU-2026:4935-1SUSE-SU-2026:24473-1SUSE-SU-2026:24553-1SUSE-SU-2026:24422-1SUSE-SU-2026:24446-1

  • kernel-rt openSUSE Leap 16.0 6.12.0-160000.40.1
  • dtb-aarch64 openSUSE Leap 16.0 6.12.0-160000.40.1
  • kernel-64kb openSUSE Leap 16.0 6.12.0-160000.40.1
  • kernel-syms openSUSE Leap 16.0 6.12.0-160000.40.1
  • kernel-azure openSUSE Leap 16.0 6.12.0-160000.40.1
  • kernel-obs-qa openSUSE Leap 16.0 6.12.0-160000.40.1
  • kernel-source openSUSE Leap 16.0 6.12.0-160000.40.1
  • kernel-default openSUSE Leap 16.0 6.12.0-160000.40.1

opensuse advisories openSUSE-SU-2026:22167-1openSUSE-SU-2026:11893-1

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2026-93252 updated cvss 5.5

kernel: ocfs2: fix circular locking dependency in ocfs2_init_acl()

  • Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernel Red Hat OpenShift Container Platform 4 openshift/ose-rhel-coreos-8, openshift/ose-rhel-coreos-9
    +1 more products
    Red Hat OpenShift Container Platform 5 openshift/ose-rhel-coreos-9
    not affected: vulnerable code not present

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

Exploit prediction

0.22% chance of exploitation in the next 30 days, higher than 12% of all scored CVEs (FIRST EPSS, 2026-11-08).

Affected products

  • Linux Linux

Classification

Technology feeds

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.