CVE-2026-93228
CriticalCVSS 9.1Summary
A vulnerability was found in the Linux kernel's svcrdma module (NFS/RDMA server). A remote peer can send a Write or Reply chunk with a segcount field of zero, which passes validation in xdr_check_write_chunk() and causes a degenerate chunk (ch_segcount == 0) to be linked onto the rc_write_pcl or rc_reply_pcl lists. An earlier patch made pcl_for_each_segment() safe for segcount 0, but the issue remains relevant as defense in depth.
Risk Assessment
The vulnerability may lead to improper data processing by the NFS/RDMA server and potential impact on service stability. Although it does not currently cause direct memory corruption, future code changes could make it more dangerous.
Recommendation
Update the Linux kernel to a version containing the fix that rejects Write/Reply chunks with segcount 0 at the decode boundary. If updating is not possible, consider restricting NFS/RDMA service access to trusted clients.
Other vulnerabilities in Linux kernel
See all- CVE-2026-97521Unknown
In the Linux kernel, a vulnerability in gfs2 was fixed: gfs2_quota_init() checks for duplicate quota_change IDs while holding qd_lock and the quota hash bucket bitlock. That path used gfs2_qd_search_bucket(), which takes a lockref reference via lockref_get_not_dead(). On PREEMPT_RT this may sleep, which is not allowed under the bucket bitlock, triggering 'sleeping function called from invalid context'. The fix uses a no-ref bucket lookup in this path and continues duplicate handling without taking a lockref there. It refactors gfs2_qd_search_bucket() to build on top of the no-ref helper so lookup traversal stays in one place.
- CVE-2026-97520High
In the Linux kernel, a vulnerability in gfs2 was fixed: moved qc++ from the loop body into the for-loop increment expression in gfs2_quota_init(). This keeps iterator progression explicit and avoids mixing pointer advance with duplicate-slot handling in the loop body.
- CVE-2026-97519Unknown
In the Linux kernel, a vulnerability in drm/xe was fixed: in xe_devcoredump_snapshot_free(), ss->gt may be NULL when the snapshot was never fully populated (e.g., when cleanup is triggered without a prior capture). Guard the xe_guc_capture_put_matched_nodes() call with IS_ERR_OR_NULL() to prevent a null dereference. In xe_devcoredump_free(), the deferred work is only queued when a coredump is captured, so guard cancel_work_sync() with a check on coredump->captured.
- CVE-2026-97518Unknown
In the Linux kernel, a vulnerability in cfg80211 was fixed: rejecting duplicate entries in wiphy->cipher_suites. Duplicates do not describe any additional capability, but cfg80211 currently accepts them and leaves individual consumers to deal with them. The WEXT compatibility code appends a WEP key length for each WEP cipher entry, which can overflow the fixed iw_range::encoding_size array returned by SIOCGIWRANGE. The fix rejects duplicate cipher suite entries in wiphy_register(), causing malformed wiphy descriptions to fail early with -EINVAL.
- CVE-2026-97517Unknown
In the Linux kernel, a vulnerability in nl80211 was fixed: rejecting beacons with bad HE operation. The HE operation element not only needs to be longer than the fixed part, but also have an appropriate size for the variable part inside of it. This is now checked.
- CVE-2026-97516Unknown
In the rtw88 driver, a NULL pointer dereference occurs in rtw_fw_adaptivity_result(). On devices with the 8821CE chip that do not define the edcca_th field, the kernel triggers an oops. The fix adds a NULL check before dereferencing, preventing the crash.
- CVE-2026-97515Unknown
In the i3c svc driver on NPCM845, a false SLVSTART event causes an interrupt storm. After emitting a STOP condition, the controller reports a new event, creating a loop that can lock up the CPU. The fix clears the SLVSTART status bit explicitly after the STOP, breaking the loop.
- CVE-2026-97514Unknown
In the chips-media wave5 driver, a lock issue is detected in handle_dynamic_resolution_change. The call in initialize_sequence does not properly acquire the lock. Additionally, v4l2_ctrl_find and s_ctrl can sleep, so they should not be called while holding the lock. The fix stores the fbc_buf_count value and updates the control after the lock is released.
- CVE-2026-97513High
In the chips-media wave5 driver, a use-after-free risk occurs when removing an instance from the list. The IRQ thread may acquire the spinlock between m2m_ctx release and removal, leading to a null pointer dereference.
- CVE-2026-97512Unknown
In the Qualcomm QSPI SPI driver, incomplete error handling in runtime PM was found. During suspend or resume, the system could be left in an inconsistent state, leading to clock/power imbalances. The fix reorders operations and adds proper error checking with cleanup.
Original NVD description (English source)
In the Linux kernel, the following vulnerability has been resolved: svcrdma: Reject Write/Reply chunks with segcount 0 A peer can send a Write or Reply chunk whose segcount field is zero. xdr_check_write_chunk() only rejects segcount > rc_maxpages, so zero passes the range check, and xdr_inline_decode(stream, 0) returns the current (non-NULL) cursor without advancing. The function returns true and pcl_alloc_write() then links a struct svc_rdma_chunk with ch_segcount == 0 onto rc_write_pcl or rc_reply_pcl. An earlier patch in this series made pcl_for_each_segment() safe for ch_segcount == 0, so this no longer drives the memory walk it used to. Rejecting the malformed frame at the decode boundary is still worthwhile as defense in depth: it keeps degenerate zero-segment chunks off the parsed chunk lists entirely, so any future consumer that walks ch_segments directly cannot observe one, and it makes the zero-floor easy to backport to trees where the macro change is more intrusive. RFC 8166 has no meaning for a Write/Reply chunk that describes no remote buffer, so no legitimate client is affected. xdr_check_reply_chunk() funnels Reply chunks through xdr_check_write_chunk() and inherits the same rejection. pcl_alloc_write() also links each chunk onto the parsed chunk list before filling its segment array. If a future change weakens the segcount-0 rejection, an incomplete chunk is visible to consumers during the fill loop. Reorder so that list_add_tail() follows the segment fill loop, ensuring only fully-populated chunks appear on the list.

