In the Linux kernel, the following vulnerability has been resolved:
net/mlx5e: Fix HV VHCA stats zero-sized buffer allocation
mlx5e_hv_vhca_stats_create() is called from mlx5e_nic_enable(), before mlx5e_open(). At that point priv->stats_nch is still zero, because it is only ever incremented in mlx5e_channel_stats_alloc(), which is reached only from mlx5e_open_channel().
mlx5e_hv_vhca_stats_buf_size() therefore returns 0, and kvzalloc(0, GFP_KERNEL) returns ZERO_SIZE_PTR ((void *)16) rather than NULL. The "if (!buf)" guard does not catch this, and mlx5e_hv_vhca_stats_create() completes "successfully" with priv->stats_agent.buf set to ZERO_SIZE_PTR.
Once channels are opened (priv->stats_nch > 0) and the hypervisor enables stats reporting, mlx5e_hv_vhca_stats_work() recomputes buf_len using the new non-zero stats_nch and calls memset(buf, 0, buf_len) on ZERO_SIZE_PTR, faulting at address 0x10.
Allocate the buffer based on priv->max_nch, which is set in mlx5e_priv_init() and is the upper bound on stats_nch:
- Add a separate helper mlx5e_hv_vhca_stats_buf_max_size() that returns sizeof(per_ring_stats) * max(max_nch, stats_nch), and use it for the kvzalloc() in mlx5e_hv_vhca_stats_create(). - Keep mlx5e_hv_vhca_stats_buf_size() (which returns based on stats_nch) for the worker's active payload size, so the wire format (block->rings = stats_nch) and the amount of data filled by mlx5e_hv_vhca_fill_stats() are unchanged.
The max(max_nch, stats_nch) guard handles the rare case where mlx5e_attach_netdev() recomputes max_nch downward across a detach/resume cycle while priv->stats_nch persists (mlx5e_detach_netdev does not call mlx5e_priv_cleanup, so stats_nch is only reset when the netdev is destroyed). Without the guard, the worker could compute buf_len from stats_nch and overrun the smaller buffer allocated based on the reduced max_nch.
Allocating a non-zero buffer also makes the kvzalloc() failure path in mlx5e_hv_vhca_stats_create() reachable for the first time: it returns early without (re)creating the agent. Clear priv->stats_agent.{agent,buf} in mlx5e_hv_vhca_stats_destroy() after freeing them, so that if a later create() bails out on this path, a subsequent teardown does not double-free the stale agent/buffer left from a previous enable/disable cycle.
This mirrors the existing mlx5e pattern of preallocating arrays of size max_nch (e.g. priv->channel_stats) and lazily populating entries up to stats_nch on demand.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade python3-perf-debuginfoUpgrade kernel-modules-extra-commonUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-develUpgrade bpftool-debuginfoUpgrade bpftoolUpgrade perfUpgrade kernel-develUpgrade kernel-toolsUpgrade kernel-tools-debuginfoUpgrade kernel-debuginfoUpgrade python3-perfUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-modules-extraUpgrade kernel-livepatch-6.1.180-225.360Upgrade kernelUpgrade kernel-headersUpgrade perf-debuginfo | Sep 1, 2026 | Aug 15, 2026 |
| Debian | — | Upgrade linux | Aug 16, 2026 | Aug 16, 2026 |
| Redhat_linux | — | No solution exists | Aug 21, 2026 | Aug 15, 2026 |
| Ubuntu | — | Upgrade linux-image-lowlatency-64kUpgrade linux-image-7.0.0-1014-gcp-64kUpgrade linux-image-6.8.0-1067-awsUpgrade linux-image-7.0.0-1013-oracle-64kUpgrade linux-image-6.8.0-1052-gkeopUpgrade linux-image-aws-64k-7.0Upgrade linux-image-lowlatencyUpgrade linux-image-nvidia-tegraUpgrade linux-image-realtime-64k-hwe-26.04Upgrade linux-image-gkeopUpgrade linux-image-7.0.0-38-generic-64kUpgrade linux-image-6.8.0-1071-gcpUpgrade linux-image-7.0.0-38-realtimeUpgrade linux-image-7.0.0-1015-ibmUpgrade linux-image-7.0.0-38-realtime-64kUpgrade linux-image-gke-64k-6.8Upgrade linux-image-6.8.0-1067-ibmUpgrade linux-image-aws-64kUpgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-1071-azure-fipsUpgrade linux-image-azure-fde-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-realtime-7.0Upgrade linux-image-6.8.0-1067-aws-64kUpgrade linux-image-azure-fde-lts-26.04Upgrade linux-image-generic-lpaeUpgrade linux-image-gke-6.8Upgrade linux-image-generic-64kUpgrade linux-image-intel-iotgUpgrade linux-image-gcpUpgrade linux-image-genericUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-147-lowlatency-64kUpgrade linux-image-gke-64k-hwe-26.04Upgrade linux-image-azureUpgrade linux-image-6.8.0-1071-gcp-fipsUpgrade linux-image-generic-64k-hwe-26.04Upgrade linux-image-6.8.0-1036-nvidia-tegra-rtUpgrade linux-image-6.8.0-1071-gcp-64kUpgrade linux-image-7.0.0-1008-gke-64kUpgrade linux-image-7.0.0-1017-azureUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-ibmUpgrade linux-image-6.8.0-1069-azure-fdeUpgrade linux-image-7.0.0-1015-oemUpgrade linux-image-7.0.0-1016-azure-fdeUpgrade linux-image-oem-7.0Upgrade linux-image-7.0.0-1014-aws-64kUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-azure-fips-6.8Upgrade linux-image-azure-lts-26.04Upgrade linux-image-fipsUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1067-aws-fipsUpgrade linux-image-6.8.0-1066-gke-64kUpgrade linux-image-6.8.0-1064-oracleUpgrade linux-image-7.0.0-1013-oracleUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-7.0.0-1014-gcpUpgrade linux-image-realtime-hwe-26.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-aws-6.8Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-gkeUpgrade linux-image-ibm-7.0Upgrade linux-image-generic-64k-7.0Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-azure-fde-7.0Upgrade linux-image-aws-7.0Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-oracle-7.0Upgrade linux-image-oracle-64k-7.0Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-virtualUpgrade linux-image-6.8.0-1036-nvidia-tegraUpgrade linux-image-gcp-fipsUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-147-lowlatencyUpgrade linux-image-oracleUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-lowlatency-6.8Upgrade linux-image-fips-6.8Upgrade linux-image-azure-lts-24.04Upgrade linux-image-virtual-hwe-26.04Upgrade linux-image-generic-hwe-26.04Upgrade linux-image-oem-26.04aUpgrade linux-image-gcp-64kUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-oracle-6.8Upgrade linux-image-ibm-6.8Upgrade linux-image-azure-fdeUpgrade linux-image-7.0.0-1008-gkeUpgrade linux-image-generic-7.0Upgrade linux-image-ibm-classicUpgrade linux-image-gke-7.0Upgrade linux-image-virtual-7.0Upgrade linux-image-realtime-64k-7.0Upgrade linux-image-laptop-23.10Upgrade linux-image-kvmUpgrade linux-image-gcp-64k-7.0Upgrade linux-image-aws-lts-24.04Upgrade linux-image-7.0.0-38-genericUpgrade linux-image-realtime-64kUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-gcp-6.8Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-gke-64kUpgrade linux-image-generic-64k-6.8Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-1066-gkeUpgrade linux-image-azure-7.0Upgrade linux-image-6.8.0-147-genericUpgrade linux-image-6.8.0-1064-oracle-64kUpgrade linux-image-6.8.1-1062-realtimeUpgrade linux-image-aws-fips-6.8Upgrade linux-image-7.0.0-1014-awsUpgrade linux-image-virtual-6.8Upgrade linux-image-oem-26.04Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-awsUpgrade linux-image-aws-64k-6.8Upgrade linux-image-6.8.0-147-generic-64kUpgrade linux-image-6.8.0-147-fipsUpgrade linux-image-realtimeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-gke-hwe-26.04Upgrade linux-image-gke-64k-7.0Upgrade linux-image-generic-6.8Upgrade linux-image-aws-fipsUpgrade linux-image-6.8.0-1071-azureUpgrade linux-image-gcp-7.0Upgrade linux-image-azure-fips | Oct 7, 2026 | Oct 6, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Aug 27, 2026 | Aug 15, 2026 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub