CVE-2021-47369: s390/qeth: fix NULL deref in qeth_clear_working_pool_list()
In the Linux kernel, the following vulnerability has been resolved:
s390/qeth: fix NULL deref in qeth_clear_working_pool_list()
When qeth_set_online() calls qeth_clear_working_pool_list() to roll
back after an error exit from qeth_hardsetup_card(), we are at risk of
accessing card->qdio.in_q before it was allocated by
qeth_alloc_qdio_queues() via qeth_mpc_initialize().
qeth_clear_working_pool_list() then dereferences NULL, and by writing to
queue->bufs[i].pool_entry scribbles all over the CPU's lowcore.
Resulting in a crash when those lowcore areas are used next (eg. on
the next machine-check interrupt).
Such a scenario would typically happen when the device is first set
online and its queues aren't allocated yet. An early IO error or certain
misconfigs (eg. mismatched transport mode, bad portno) then cause us to
error out from qeth_hardsetup_card() with card->qdio.in_q still being
NULL.
Fix it by checking the pointer for NULL before accessing it.
Note that we also have (rare) paths inside qeth_mpc_initialize() where
a configuration change can cause us to free the existing queues,
expecting that subsequent code will allocate them again. If we then
error out before that re-allocation happens, the same bug occurs.
Root-caused-by: Heiko Carstens <hca@linux.ibm.com>
Security readout for executives and security teams
Plain-English summary
This is a Linux kernel crash bug in IBM s390 qeth networking. If triggered locally during device setup or certain configuration errors, the kernel can dereference a NULL pointer and crash. The business impact is availability loss on affected s390 Linux systems, not data theft or remote compromise based on the supplied sources.
Executive priority
Prioritize for IBM Z or LinuxONE environments where s390 qeth networking is used, especially production systems requiring high uptime. It is lower urgency for environments without s390 Linux, qeth devices, or local administrative access paths.
Technical view
The qeth driver can call qeth_clear_working_pool_list() before card->qdio.in_q is allocated, or after queues are freed and not reallocated. The function then dereferences NULL and writes through queue buffer state, corrupting lowcore and causing a later crash. The fix adds a NULL check before access.
Likely exposure
Exposure appears limited to Linux on s390 systems using the qeth network driver. The CVE uses local attack vector, low privileges, no user interaction, and high availability impact. Internet-facing exposure is not indicated by the provided sources.
Exploitation context
The source bundle does not show active exploitation, and KEV is false. Trigger conditions described are early I/O errors or misconfiguration when a qeth device is first set online, or rare queue reallocation paths during configuration changes.
Researcher notes
The vulnerability is CWE-476 and CVSS 5.5. The primary uncertainty is exact affected version mapping because the bundle lists kernel versions and commits without full distro backport status. Treat vendor package guidance as authoritative for exposure decisions.
Mitigation direction
Apply vendor kernel updates containing the referenced stable qeth fixes.
Confirm your distribution has backported the fix if kernel versions differ.
Restrict local access to network device administration on s390 systems.
Review qeth transport mode and port configuration for known misconfigurations.
Validation and detection
Inventory Linux s390 hosts using the qeth driver.
Compare installed kernel packages with vendor advisories or stable fix commits.
Check kernel logs for qeth setup errors or crash signatures around device online operations.
Validate qeth device online transitions in staging after patching.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-476: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-476 · source CWE mapping
NULL Pointer Dereference
NULL Pointer Dereference represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.