From 60b15ef93d2d60d3e05af44d7eef2ce07162dca0 Mon Sep 17 00:00:00 2001 From: Eduard Abdullin Date: Thu, 30 Jul 2026 23:18:41 +0000 Subject: [PATCH] Debrand for AlmaLinux OS Use AlmaLinux OS secure boot cert Enable Btrfs support for all kernel variants hpsa: bring back deprecated PCI ids #CFHack #CFHack2024 mptsas: bring back deprecated PCI ids #CFHack #CFHack2024 megaraid_sas: bring back deprecated PCI ids #CFHack #CFHack2024 qla2xxx: bring back deprecated PCI ids #CFHack #CFHack2024 qla4xxx: bring back deprecated PCI ids be2iscsi: bring back deprecated PCI ids kernel/rh_messages.h: enable all disabled pci devices by moving to unmaintained gve: update QPL page registration logic to honor max_registered_pages (backport from upstream) gve: enable reading max ring size from the device in DQO-QPL mode (backport from upstream) --- .gitignore | 6 +- ...e-Update-QPL-page-registration-logic.patch | 323 ++++++++++++++++++ ...eading-max-ring-size-in-DQO-QPL-mode.patch | 53 +++ Makefile.rhelver | 2 +- kernel.changelog | 16 + kernel.spec | 37 +- sources | 6 +- 7 files changed, 429 insertions(+), 14 deletions(-) create mode 100644 2011-gve-Update-QPL-page-registration-logic.patch create mode 100644 2012-gve-Enable-reading-max-ring-size-in-DQO-QPL-mode.patch diff --git a/.gitignore b/.gitignore index edb97d5ca..a6b5c5cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ fedoraimaca.x509 -kernel-abi-stablelists-6.12.0-211.38.1.el10_2.tar.xz -kernel-kabi-dw-6.12.0-211.38.1.el10_2.tar.xz -linux-6.12.0-211.38.1.el10_2.tar.xz +kernel-abi-stablelists-6.12.0-211.39.1.el10_2.tar.xz +kernel-kabi-dw-6.12.0-211.39.1.el10_2.tar.xz +linux-6.12.0-211.39.1.el10_2.tar.xz nvidiabfdpu.x509 nvidiagpuoot001.x509 nvidiajetsonsoc.x509 diff --git a/2011-gve-Update-QPL-page-registration-logic.patch b/2011-gve-Update-QPL-page-registration-logic.patch new file mode 100644 index 000000000..807482a90 --- /dev/null +++ b/2011-gve-Update-QPL-page-registration-logic.patch @@ -0,0 +1,323 @@ +From 07993df560917357610e0625a9a2e7531c3211fc Mon Sep 17 00:00:00 2001 +From: Matt Olson +Date: Wed, 25 Feb 2026 10:23:41 -0800 +Subject: [PATCH AlmaLinux 10] gve: Update QPL page registration logic + +For DQO, change QPL page registration logic to be more flexible to honor +the "max_registered_pages" parameter from the gVNIC device. + +Previously the number of RX pages per QPL was hardcoded to twice the +ring size, and the number of TX pages per QPL was dictated by the device +in the DQO-QPL device option. Now [in DQO-QPL mode], the driver will +ignore the "tx_pages_per_qpl" parameter indicated in the DQO-QPL device +option and instead allocate up to (tx_queue_length / 2) pages per TX QPL +and up to (rx_queue_length * 2) pages per RX QPL while keeping the total +number of pages under the "max_registered_pages". + +Merge DQO and GQI QPL page calculation logic into a unified +gve_update_num_qpl_pages function. Add rx_pages_per_qpl to the priv +struct for consumption by both DQO and GQI. + +Signed-off-by: Matt Olson +Signed-off-by: Max Yuan +Reviewed-by: Jordan Rhee +Reviewed-by: Harshitha Ramamurthy +Reviewed-by: Willem de Bruijn +Reviewed-by: Praveen Kaligineedi +Signed-off-by: Joshua Washington +Link: https://patch.msgid.link/20260225182342.1049816-2-joshwash@google.com +Signed-off-by: Jakub Kicinski + +[ AlmaLinux: backported to the 6.12 gve driver. The upstream commit targets + the post-refactor gve driver; the equivalent changes were applied to the + older driver shipped in RHEL/AlmaLinux 10: + - rx_alloc_cfg->qcfg_rx->num_queues -> rx_alloc_cfg->qcfg->num_queues + (the rx alloc-rings cfg uses the shared gve_queue_config field name). + - The gve_alloc_qpl_page_dqo() bound check lives in gve_rx_dqo.c here + rather than in the not-yet-present gve_buffer_mgmt_dqo.c. + The QPL page-sizing logic is otherwise identical to upstream. ] +Signed-off-by: Andrew Lukoshko +--- +diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/google/gve/gve.h +index adc2b9a..65bd511 100644 +--- a/drivers/net/ethernet/google/gve/gve.h ++++ b/drivers/net/ethernet/google/gve/gve.h +@@ -71,8 +71,6 @@ + + #define GVE_DEFAULT_HEADER_BUFFER_SIZE 128 + +-#define DQO_QPL_DEFAULT_TX_PAGES 512 +- + /* Maximum TSO size supported on DQO */ + #define GVE_DQO_TX_MAX 0x3FFFF + +@@ -646,6 +644,7 @@ struct gve_ptype_lut { + /* Parameters for allocating resources for tx queues */ + struct gve_tx_alloc_rings_cfg { + struct gve_queue_config *qcfg; ++ u16 pages_per_qpl; + + u16 ring_size; + u16 start_idx; +@@ -661,6 +660,7 @@ struct gve_rx_alloc_rings_cfg { + /* tx config is also needed to determine QPL ids */ + struct gve_queue_config *qcfg; + struct gve_queue_config *qcfg_tx; ++ u16 pages_per_qpl; + + u16 ring_size; + u16 packet_buffer_size; +@@ -738,7 +738,8 @@ struct gve_priv { + u16 min_rx_desc_cnt; + bool modify_ring_size_enabled; + bool default_min_ring_size; +- u16 tx_pages_per_qpl; /* Suggested number of pages per qpl for TX queues by NIC */ ++ u16 tx_pages_per_qpl; ++ u16 rx_pages_per_qpl; + u64 max_registered_pages; + u64 num_registered_pages; /* num pages registered with NIC */ + struct bpf_prog *xdp_prog; /* XDP BPF program */ +@@ -1071,14 +1072,6 @@ static inline u32 gve_rx_start_qpl_id(const struct gve_queue_config *tx_cfg) + return gve_get_rx_qpl_id(tx_cfg, 0); + } + +-static inline u32 gve_get_rx_pages_per_qpl_dqo(u32 rx_desc_cnt) +-{ +- /* For DQO, page count should be more than ring size for +- * out-of-order completions. Set it to two times of ring size. +- */ +- return 2 * rx_desc_cnt; +-} +- + /* Returns the correct dma direction for tx and rx qpls */ + static inline enum dma_data_direction gve_qpl_dma_dir(struct gve_priv *priv, + int id) +@@ -1178,6 +1171,9 @@ int gve_reset(struct gve_priv *priv, bool attempt_teardown); + void gve_get_curr_alloc_cfgs(struct gve_priv *priv, + struct gve_tx_alloc_rings_cfg *tx_alloc_cfg, + struct gve_rx_alloc_rings_cfg *rx_alloc_cfg); ++void gve_update_num_qpl_pages(struct gve_priv *priv, ++ struct gve_rx_alloc_rings_cfg *rx_alloc_cfg, ++ struct gve_tx_alloc_rings_cfg *tx_alloc_cfg); + int gve_adjust_config(struct gve_priv *priv, + struct gve_tx_alloc_rings_cfg *tx_alloc_cfg, + struct gve_rx_alloc_rings_cfg *rx_alloc_cfg); +diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/ethernet/google/gve/gve_adminq.c +index e44e8b1..7335b48 100644 +--- a/drivers/net/ethernet/google/gve/gve_adminq.c ++++ b/drivers/net/ethernet/google/gve/gve_adminq.c +@@ -911,14 +911,6 @@ static void gve_enable_supported_features(struct gve_priv *priv, + priv->dev->max_mtu = be16_to_cpu(dev_op_jumbo_frames->max_mtu); + } + +- /* Override pages for qpl for DQO-QPL */ +- if (dev_op_dqo_qpl) { +- priv->tx_pages_per_qpl = +- be16_to_cpu(dev_op_dqo_qpl->tx_pages_per_qpl); +- if (priv->tx_pages_per_qpl == 0) +- priv->tx_pages_per_qpl = DQO_QPL_DEFAULT_TX_PAGES; +- } +- + if (dev_op_buffer_sizes && + (supported_features_mask & GVE_SUP_BUFFER_SIZES_MASK)) { + priv->max_rx_buffer_size = +diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c +index 72e9ce9..a065891 100644 +--- a/drivers/net/ethernet/google/gve/gve_main.c ++++ b/drivers/net/ethernet/google/gve/gve_main.c +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -926,6 +927,7 @@ static void gve_tx_get_curr_alloc_cfg(struct gve_priv *priv, + cfg->qcfg = &priv->tx_cfg; + cfg->raw_addressing = !gve_is_qpl(priv); + cfg->ring_size = priv->tx_desc_cnt; ++ cfg->pages_per_qpl = priv->tx_pages_per_qpl; + cfg->start_idx = 0; + cfg->num_rings = gve_num_tx_queues(priv); + cfg->tx = priv->tx; +@@ -981,12 +983,48 @@ static int gve_alloc_xdp_rings(struct gve_priv *priv) + return 0; + } + ++void gve_update_num_qpl_pages(struct gve_priv *priv, ++ struct gve_rx_alloc_rings_cfg *rx_alloc_cfg, ++ struct gve_tx_alloc_rings_cfg *tx_alloc_cfg) ++{ ++ u64 ideal_tx_pages, ideal_rx_pages; ++ u16 tx_num_queues, rx_num_queues; ++ u64 max_pages, tx_pages; ++ ++ if (priv->queue_format == GVE_GQI_QPL_FORMAT) { ++ rx_alloc_cfg->pages_per_qpl = rx_alloc_cfg->ring_size; ++ } else if (priv->queue_format == GVE_DQO_QPL_FORMAT) { ++ /* ++ * We want 2 pages per RX descriptor and half a page per TX ++ * descriptor, which means the fraction ideal_tx_pages / ++ * (ideal_tx_pages + ideal_rx_pages) of the pages we allocate ++ * should be for TX. Shrink proportionally as necessary to avoid ++ * allocating more than max_registered_pages total pages. ++ */ ++ tx_num_queues = tx_alloc_cfg->qcfg->num_queues; ++ rx_num_queues = rx_alloc_cfg->qcfg->num_queues; ++ ++ ideal_tx_pages = tx_alloc_cfg->ring_size * tx_num_queues / 2; ++ ideal_rx_pages = rx_alloc_cfg->ring_size * rx_num_queues * 2; ++ max_pages = min(priv->max_registered_pages, ++ ideal_tx_pages + ideal_rx_pages); ++ ++ tx_pages = div64_u64(max_pages * ideal_tx_pages, ++ ideal_tx_pages + ideal_rx_pages); ++ tx_alloc_cfg->pages_per_qpl = div_u64(tx_pages, tx_num_queues); ++ rx_alloc_cfg->pages_per_qpl = div_u64(max_pages - tx_pages, ++ rx_num_queues); ++ } ++} ++ + static int gve_queues_mem_alloc(struct gve_priv *priv, + struct gve_tx_alloc_rings_cfg *tx_alloc_cfg, + struct gve_rx_alloc_rings_cfg *rx_alloc_cfg) + { + int err; + ++ gve_update_num_qpl_pages(priv, rx_alloc_cfg, tx_alloc_cfg); ++ + if (gve_is_gqi(priv)) + err = gve_tx_alloc_rings_gqi(priv, tx_alloc_cfg); + else +@@ -1281,6 +1319,7 @@ static void gve_rx_get_curr_alloc_cfg(struct gve_priv *priv, + cfg->raw_addressing = !gve_is_qpl(priv); + cfg->enable_header_split = priv->header_split_enabled; + cfg->ring_size = priv->rx_desc_cnt; ++ cfg->pages_per_qpl = priv->rx_pages_per_qpl; + cfg->packet_buffer_size = gve_is_gqi(priv) ? + GVE_DEFAULT_RX_BUFFER_SIZE : + priv->data_buffer_size_dqo; +@@ -1360,6 +1399,8 @@ static int gve_queues_start(struct gve_priv *priv, + priv->rx_cfg = *rx_alloc_cfg->qcfg; + priv->tx_desc_cnt = tx_alloc_cfg->ring_size; + priv->rx_desc_cnt = rx_alloc_cfg->ring_size; ++ priv->tx_pages_per_qpl = tx_alloc_cfg->pages_per_qpl; ++ priv->rx_pages_per_qpl = rx_alloc_cfg->pages_per_qpl; + + if (priv->xdp_prog) + priv->num_xdp_queues = priv->rx_cfg.num_queues; +diff --git a/drivers/net/ethernet/google/gve/gve_rx.c b/drivers/net/ethernet/google/gve/gve_rx.c +index acb73d4..77077ca 100644 +--- a/drivers/net/ethernet/google/gve/gve_rx.c ++++ b/drivers/net/ethernet/google/gve/gve_rx.c +@@ -272,7 +272,6 @@ int gve_rx_alloc_ring_gqi(struct gve_priv *priv, + struct device *hdev = &priv->pdev->dev; + u32 slots = cfg->ring_size; + int filled_pages; +- int qpl_page_cnt; + u32 qpl_id = 0; + size_t bytes; + int err; +@@ -308,10 +307,8 @@ int gve_rx_alloc_ring_gqi(struct gve_priv *priv, + + if (!rx->data.raw_addressing) { + qpl_id = gve_get_rx_qpl_id(cfg->qcfg_tx, rx->q_num); +- qpl_page_cnt = cfg->ring_size; +- + rx->data.qpl = gve_alloc_queue_page_list(priv, qpl_id, +- qpl_page_cnt); ++ cfg->pages_per_qpl); + if (!rx->data.qpl) { + err = -ENOMEM; + goto abort_with_copy_pool; +diff --git a/drivers/net/ethernet/google/gve/gve_rx_dqo.c b/drivers/net/ethernet/google/gve/gve_rx_dqo.c +index 1154c1d..1cbaf23 100644 +--- a/drivers/net/ethernet/google/gve/gve_rx_dqo.c ++++ b/drivers/net/ethernet/google/gve/gve_rx_dqo.c +@@ -178,7 +178,7 @@ static int gve_alloc_page_dqo(struct gve_rx_ring *rx, + return err; + } else { + idx = rx->dqo.next_qpl_page_idx; +- if (idx >= gve_get_rx_pages_per_qpl_dqo(priv->rx_desc_cnt)) { ++ if (idx >= priv->rx_pages_per_qpl) { + net_err_ratelimited("%s: Out of QPL pages\n", + priv->dev->name); + return -ENOMEM; +@@ -382,7 +382,6 @@ int gve_rx_alloc_ring_dqo(struct gve_priv *priv, + int idx) + { + struct device *hdev = &priv->pdev->dev; +- int qpl_page_cnt; + size_t size; + u32 qpl_id; + +@@ -397,7 +396,7 @@ int gve_rx_alloc_ring_dqo(struct gve_priv *priv, + + rx->dqo.num_buf_states = cfg->raw_addressing ? + min_t(s16, S16_MAX, buffer_queue_slots * 4) : +- gve_get_rx_pages_per_qpl_dqo(cfg->ring_size); ++ cfg->pages_per_qpl; + rx->dqo.buf_states = kvcalloc(rx->dqo.num_buf_states, + sizeof(rx->dqo.buf_states[0]), + GFP_KERNEL); +@@ -426,10 +425,8 @@ int gve_rx_alloc_ring_dqo(struct gve_priv *priv, + + if (!cfg->raw_addressing) { + qpl_id = gve_get_rx_qpl_id(cfg->qcfg_tx, rx->q_num); +- qpl_page_cnt = gve_get_rx_pages_per_qpl_dqo(cfg->ring_size); +- + rx->dqo.qpl = gve_alloc_queue_page_list(priv, qpl_id, +- qpl_page_cnt); ++ cfg->pages_per_qpl); + if (!rx->dqo.qpl) + goto err; + rx->dqo.next_qpl_page_idx = 0; +diff --git a/drivers/net/ethernet/google/gve/gve_tx.c b/drivers/net/ethernet/google/gve/gve_tx.c +index e7fb7d6..d471507 100644 +--- a/drivers/net/ethernet/google/gve/gve_tx.c ++++ b/drivers/net/ethernet/google/gve/gve_tx.c +@@ -261,7 +261,6 @@ static int gve_tx_alloc_ring_gqi(struct gve_priv *priv, + int idx) + { + struct device *hdev = &priv->pdev->dev; +- int qpl_page_cnt; + u32 qpl_id = 0; + size_t bytes; + +@@ -288,10 +287,8 @@ static int gve_tx_alloc_ring_gqi(struct gve_priv *priv, + tx->dev = hdev; + if (!tx->raw_addressing) { + qpl_id = gve_tx_qpl_id(priv, tx->q_num); +- qpl_page_cnt = priv->tx_pages_per_qpl; +- + tx->tx_fifo.qpl = gve_alloc_queue_page_list(priv, qpl_id, +- qpl_page_cnt); ++ cfg->pages_per_qpl); + if (!tx->tx_fifo.qpl) + goto abort_with_desc; + +diff --git a/drivers/net/ethernet/google/gve/gve_tx_dqo.c b/drivers/net/ethernet/google/gve/gve_tx_dqo.c +index f879426..9118256 100644 +--- a/drivers/net/ethernet/google/gve/gve_tx_dqo.c ++++ b/drivers/net/ethernet/google/gve/gve_tx_dqo.c +@@ -287,7 +287,6 @@ static int gve_tx_alloc_ring_dqo(struct gve_priv *priv, + { + struct device *hdev = &priv->pdev->dev; + int num_pending_packets; +- int qpl_page_cnt; + size_t bytes; + u32 qpl_id; + int i; +@@ -357,10 +356,8 @@ static int gve_tx_alloc_ring_dqo(struct gve_priv *priv, + + if (!cfg->raw_addressing) { + qpl_id = gve_tx_qpl_id(priv, tx->q_num); +- qpl_page_cnt = priv->tx_pages_per_qpl; +- + tx->dqo.qpl = gve_alloc_queue_page_list(priv, qpl_id, +- qpl_page_cnt); ++ cfg->pages_per_qpl); + if (!tx->dqo.qpl) + goto err; + diff --git a/2012-gve-Enable-reading-max-ring-size-in-DQO-QPL-mode.patch b/2012-gve-Enable-reading-max-ring-size-in-DQO-QPL-mode.patch new file mode 100644 index 000000000..a5ca09b8f --- /dev/null +++ b/2012-gve-Enable-reading-max-ring-size-in-DQO-QPL-mode.patch @@ -0,0 +1,53 @@ +From a2f19184014f309165d2d4cfb41088b75c1121a4 Mon Sep 17 00:00:00 2001 +From: Matt Olson +Date: Wed, 25 Feb 2026 10:23:42 -0800 +Subject: [PATCH AlmaLinux 10] gve: Enable reading max ring size from the device in DQO-QPL mode + +The gVNIC device indicates a device option (MODIFY_RING) to the driver, +which presents a range of ring sizes from which the user is allowed to +select. But in DQO-QPL queue format, the driver ignores the "max" of +this range and instead allows the user to configure the ring size in the +range [min, default]. This was done because increasing the ring size +could result in the number of registered pages being higher than the max +allowed by the device. + +In order to support large ring sizes, stop ignoring the "max" of the +range presented in the MODIFY_RING option. + +Signed-off-by: Matt Olson +Signed-off-by: Max Yuan +Reviewed-by: Jordan Rhee +Reviewed-by: Harshitha Ramamurthy +Reviewed-by: Praveen Kaligineedi +Signed-off-by: Joshua Washington +Link: https://patch.msgid.link/20260225182342.1049816-3-joshwash@google.com +Signed-off-by: Jakub Kicinski + +[ AlmaLinux: applied unmodified on top of the backported "gve: Update QPL page + registration logic". ] +Signed-off-by: Andrew Lukoshko +--- +diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/ethernet/google/gve/gve_adminq.c +index 2c233009621bc..b5f105709e49b 100644 +--- a/drivers/net/ethernet/google/gve/gve_adminq.c ++++ b/drivers/net/ethernet/google/gve/gve_adminq.c +@@ -989,12 +989,10 @@ static void gve_enable_supported_features(struct gve_priv *priv, + if (dev_op_modify_ring && + (supported_features_mask & GVE_SUP_MODIFY_RING_MASK)) { + priv->modify_ring_size_enabled = true; +- +- /* max ring size for DQO QPL should not be overwritten because of device limit */ +- if (priv->queue_format != GVE_DQO_QPL_FORMAT) { +- priv->max_rx_desc_cnt = be16_to_cpu(dev_op_modify_ring->max_rx_ring_size); +- priv->max_tx_desc_cnt = be16_to_cpu(dev_op_modify_ring->max_tx_ring_size); +- } ++ priv->max_rx_desc_cnt = ++ be16_to_cpu(dev_op_modify_ring->max_rx_ring_size); ++ priv->max_tx_desc_cnt = ++ be16_to_cpu(dev_op_modify_ring->max_tx_ring_size); + if (priv->default_min_ring_size) { + /* If device hasn't provided minimums, use default minimums */ + priv->min_tx_desc_cnt = GVE_DEFAULT_MIN_TX_RING_SIZE; +-- +cgit 1.3-korg + diff --git a/Makefile.rhelver b/Makefile.rhelver index 470568593..028e2bbe0 100644 --- a/Makefile.rhelver +++ b/Makefile.rhelver @@ -12,7 +12,7 @@ RHEL_MINOR = 2 # # Use this spot to avoid future merge conflicts. # Do not trim this comment. -RHEL_RELEASE = 211.38.1 +RHEL_RELEASE = 211.39.1 # # RHEL_REBASE_NUM diff --git a/kernel.changelog b/kernel.changelog index f2219202a..1a3438ec3 100644 --- a/kernel.changelog +++ b/kernel.changelog @@ -1,3 +1,19 @@ +* Thu Jul 23 2026 CKI KWF Bot [6.12.0-211.39.1.el10_2] +- futex: Drop CLONE_THREAD requirement for private default hash alloc (Audra Mitchell) [RHEL-193518] {CVE-2026-52973} +- net: ipv6: fix NOREF dst use in seg6 and rpl lwtunnels (Antoine Tenart) [RHEL-179299] {CVE-2026-46099} +- scsi: core: Wake up the error handler when final completions race against each other (CKI Backport Bot) [RHEL-189651] {CVE-2026-23110} +- dm log: fix out-of-bounds write due to region_count overflow (CKI Backport Bot) [RHEL-188547] {CVE-2026-53059} +- rtnetlink: add missing netlink_ns_capable() check for peer netns (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- rtnetlink: Try the outer netns attribute in rtnl_get_peer_net(). (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- rtnetlink: fix double call of rtnl_link_get_net_ifla() (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- netkit: Set IFLA_NETKIT_PEER_INFO to netkit_link_ops.peer_type. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- vxcan: Set VXCAN_INFO_PEER to vxcan_link_ops.peer_type. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- veth: Set VETH_INFO_PEER to veth_link_ops.peer_type. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- rtnetlink: Add peer_type in struct rtnl_link_ops. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- fs/notify: call exportfs_encode_fid with s_umount (Jay Shin) [RHEL-169188] {CVE-2025-40237} +- fs: relax assertions on failure to encode file handles (Jay Shin) [RHEL-169188] +Resolves: RHEL-169188, RHEL-172537, RHEL-179299, RHEL-188547, RHEL-189651, RHEL-193518 + * Wed Jul 22 2026 CKI KWF Bot [6.12.0-211.38.1.el10_2] - net: gro: don't merge zcopy skbs (CKI Backport Bot) [RHEL-177856] {CVE-2026-46323} Resolves: RHEL-177856 diff --git a/kernel.spec b/kernel.spec index ab8c0497f..a2af6c31f 100644 --- a/kernel.spec +++ b/kernel.spec @@ -176,15 +176,15 @@ Summary: The Linux kernel %define specrpmversion 6.12.0 %define specversion 6.12.0 %define patchversion 6.12 -%define pkgrelease 211.38.1 +%define pkgrelease 211.39.1 %define kversion 6 -%define tarfile_release 6.12.0-211.38.1.el10_2 +%define tarfile_release 6.12.0-211.39.1.el10_2 # This is needed to do merge window version magic %define patchlevel 12 # This allows pkg_release to have configurable %%{?dist} tag -%define specrelease 211.38.1%{?buildid}%{?dist} +%define specrelease 211.39.1%{?buildid}%{?dist} # This defines the kabi tarball version -%define kabiversion 6.12.0-211.38.1.el10_2 +%define kabiversion 6.12.0-211.39.1.el10_2 # If this variable is set to 1, a bpf selftests build failure will cause a # fatal kernel package build error @@ -1138,6 +1138,8 @@ Patch2007: 0007-Bring-back-deprecated-pci-ids-to-be2iscsi-driver.patch Patch2008: 0008-Bring-back-deprecated-pci-ids-to-megaraid_sas-driver.patch Patch2009: 0009-Bring-back-deprecated-pci-ids-to-mpt3sas-driver.patch Patch2010: 0001-Keep-fs-btrfs-files-in-modules-package.patch +Patch2011: 2011-gve-Update-QPL-page-registration-logic.patch +Patch2012: 2012-gve-Enable-reading-max-ring-size-in-DQO-QPL-mode.patch # END OF PATCH DEFINITIONS @@ -1998,6 +2000,8 @@ ApplyPatch 0007-Bring-back-deprecated-pci-ids-to-be2iscsi-driver.patch ApplyPatch 0008-Bring-back-deprecated-pci-ids-to-megaraid_sas-driver.patch ApplyPatch 0009-Bring-back-deprecated-pci-ids-to-mpt3sas-driver.patch ApplyPatch 0001-Keep-fs-btrfs-files-in-modules-package.patch +ApplyPatch 2011-gve-Update-QPL-page-registration-logic.patch +ApplyPatch 2012-gve-Enable-reading-max-ring-size-in-DQO-QPL-mode.patch %{log_msg "End of patch applications"} # END OF PATCH APPLICATIONS @@ -4511,14 +4515,14 @@ fi\ # # %changelog -* Fri Jul 24 2026 Eduard Abdullin - 6.12.0-211.38.1 +* Thu Jul 30 2026 Eduard Abdullin - 6.12.0-211.39.1 - Debrand for AlmaLinux OS - Use AlmaLinux OS secure boot cert -* Fri Jul 24 2026 Neal Gompa - 6.12.0-211.38.1 +* Thu Jul 30 2026 Neal Gompa - 6.12.0-211.39.1 - Enable Btrfs support for all kernel variants -* Fri Jul 24 2026 Andrew Lukoshko - 6.12.0-211.38.1 +* Thu Jul 30 2026 Andrew Lukoshko - 6.12.0-211.39.1 - hpsa: bring back deprecated PCI ids #CFHack #CFHack2024 - mptsas: bring back deprecated PCI ids #CFHack #CFHack2024 - megaraid_sas: bring back deprecated PCI ids #CFHack #CFHack2024 @@ -4527,6 +4531,25 @@ fi\ - be2iscsi: bring back deprecated PCI ids - kernel/rh_messages.h: enable all disabled pci devices by moving to unmaintained +- gve: update QPL page registration logic to honor max_registered_pages + (backport from upstream) +- gve: enable reading max ring size from the device in DQO-QPL mode (backport + from upstream) + +* Thu Jul 23 2026 CKI KWF Bot [6.12.0-211.39.1.el10_2] +- futex: Drop CLONE_THREAD requirement for private default hash alloc (Audra Mitchell) [RHEL-193518] {CVE-2026-52973} +- net: ipv6: fix NOREF dst use in seg6 and rpl lwtunnels (Antoine Tenart) [RHEL-179299] {CVE-2026-46099} +- scsi: core: Wake up the error handler when final completions race against each other (CKI Backport Bot) [RHEL-189651] {CVE-2026-23110} +- dm log: fix out-of-bounds write due to region_count overflow (CKI Backport Bot) [RHEL-188547] {CVE-2026-53059} +- rtnetlink: add missing netlink_ns_capable() check for peer netns (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- rtnetlink: Try the outer netns attribute in rtnl_get_peer_net(). (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- rtnetlink: fix double call of rtnl_link_get_net_ifla() (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- netkit: Set IFLA_NETKIT_PEER_INFO to netkit_link_ops.peer_type. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- vxcan: Set VXCAN_INFO_PEER to vxcan_link_ops.peer_type. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- veth: Set VETH_INFO_PEER to veth_link_ops.peer_type. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- rtnetlink: Add peer_type in struct rtnl_link_ops. (Guillaume Nault) [RHEL-172537] {CVE-2026-31692} +- fs/notify: call exportfs_encode_fid with s_umount (Jay Shin) [RHEL-169188] {CVE-2025-40237} +- fs: relax assertions on failure to encode file handles (Jay Shin) [RHEL-169188] * Wed Jul 22 2026 CKI KWF Bot [6.12.0-211.38.1.el10_2] - net: gro: don't merge zcopy skbs (CKI Backport Bot) [RHEL-177856] {CVE-2026-46323} diff --git a/sources b/sources index f990e129c..36f41e002 100644 --- a/sources +++ b/sources @@ -1,7 +1,7 @@ SHA512 (fedoraimaca.x509) = e04809394f4472c17e86d7024dee34f03fb68e82a85502fd5b00535202c72e57626a8376b2cf991b7e1e46404aa5ab8d189ebf320e0dd37d49e7efbc925c7a2e -SHA512 (kernel-abi-stablelists-6.12.0-211.38.1.el10_2.tar.xz) = 6e1ea95ca9ded288a0b60ceb162e4ad03204e3f2cd5b21229051693ba4d7a8cc48099d6e7dbcebab3aff64f12b96733bebc3f3f351aae9a980759d783a168829 -SHA512 (kernel-kabi-dw-6.12.0-211.38.1.el10_2.tar.xz) = 41f10212678b652f80cc3edb4e2776c897aaf1c1864efcc29b6f8995dd406914be39eb3ef31c808f428cb7f74853bfb976a9bb40cb0069abe0535f87a96e1a7a -SHA512 (linux-6.12.0-211.38.1.el10_2.tar.xz) = 86288b079e583d6f9c319044f9db9d16bc861ac351caa4d83bdc9080b4a021623af1b3424d6a0824e016e75cd523d0da60f98d6fe5005167b245a09d184cb4b8 +SHA512 (kernel-abi-stablelists-6.12.0-211.39.1.el10_2.tar.xz) = 3bd60e7e4d4daae4d638a21dbee37fb18d5a52bdadf8282fff43ab9ead67af170e0928dbb613785c58410d67001a31777dbe74c3b6db268c63a488503cb7f2bf +SHA512 (kernel-kabi-dw-6.12.0-211.39.1.el10_2.tar.xz) = f9ac34c9a475b98b6fc7fc8affb117ea3825eb2974077bc1c61deeaf47703eb57dac8f1142daea1c7a434f4b6b75fe3d3ee7f2bdd4fc51a62880d79032c7eac2 +SHA512 (linux-6.12.0-211.39.1.el10_2.tar.xz) = 8ee62c490ba0e9af6bfceae063b4d7bddea568b8f4d38ddf1cd6009bf5c6782b9de92819711d760a0274aae08fa683b636527bcbf035f465d4b80d2013ea339d SHA512 (nvidiabfdpu.x509) = d9f4fbafcec66803c5944df1f97d4348968141c968e6537252c9854c89dca8ea3be225a9c40abbbf2b7d4d3cfd8c5012cd2d34d90443fbc0277b7a018622ac4f SHA512 (nvidiagpuoot001.x509) = b42f836e1cfa07890cb6ca13de9c3950e306c9ec7686c4c09f050bb68869f5d82962b2cd5f3aa0eb7a0f3a3ae54e9c480eafbac5df53aa92c295ff511a8c59fe SHA512 (nvidiajetsonsoc.x509) = 3c6d4f0800b3fae3c3cc3e5361de31df233e230ea96f0fdd3dcc713e6a71e27309f60e7a98d1a4a90d470f336ce311f22fcc88f219429272e96339717fe001dd