summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2026-08-11 18:26:09 -0700
committerJakub Kicinski <kuba@kernel.org>2026-08-11 18:26:10 -0700
commit484ec2ab78438b06153fb12b16827992a5ab8204 (patch)
tree52ea83f7cba7164878f82a029aba576a35a178fe
parentf60b396ee174206fe08ebf997d16cd3801b77b22 (diff)
parent3992ced109c70b771efad9e51ae68e5c7a04dea3 (diff)
Merge branch 'gve-bug-fixes-for-header-split-and-ptp'
Harshitha Ramamurthy says: ==================== gve: Bug fixes for header-split and PTP This series contains 2 bug fixes for gve. Patch 1 fixes an issue which causes TX timeouts due to HW detection of an illegal descriptor. This happens when receiving header-only packets with header split enabled - this produces an SKB with a zero-length fragment. Patch 2 prevents a kernel NULL pointer dereference by stubbing the PTP adjfine callback. ==================== Link: https://patch.msgid.link/20260807224315.234152-1-hramamurthy@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/ethernet/google/gve/gve_ptp.c6
-rw-r--r--drivers/net/ethernet/google/gve/gve_rx_dqo.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ethernet/google/gve/gve_ptp.c b/drivers/net/ethernet/google/gve/gve_ptp.c
index 06b1cf4a5efc..1d6c59f4ead3 100644
--- a/drivers/net/ethernet/google/gve/gve_ptp.c
+++ b/drivers/net/ethernet/google/gve/gve_ptp.c
@@ -26,6 +26,11 @@ int gve_clock_nic_ts_read(struct gve_priv *priv)
return 0;
}
+static int gve_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm)
+{
+ return -EOPNOTSUPP;
+}
+
static int gve_ptp_gettimex64(struct ptp_clock_info *info,
struct timespec64 *ts,
struct ptp_system_timestamp *sts)
@@ -60,6 +65,7 @@ out:
static const struct ptp_clock_info gve_ptp_caps = {
.owner = THIS_MODULE,
.name = "gve clock",
+ .adjfine = gve_ptp_adjfine,
.gettimex64 = gve_ptp_gettimex64,
.settime64 = gve_ptp_settime64,
.do_aux_work = gve_ptp_do_aux_work,
diff --git a/drivers/net/ethernet/google/gve/gve_rx_dqo.c b/drivers/net/ethernet/google/gve/gve_rx_dqo.c
index 8271f731a91f..0ece2f6fdffb 100644
--- a/drivers/net/ethernet/google/gve/gve_rx_dqo.c
+++ b/drivers/net/ethernet/google/gve/gve_rx_dqo.c
@@ -886,6 +886,11 @@ static int gve_rx_dqo(struct napi_struct *napi, struct gve_rx_ring *rx,
rx->rx_hsplit_unsplit_pkt += unsplit;
rx->rx_hsplit_bytes += hdr_len;
u64_stats_update_end(&rx->statss);
+
+ if (!buf_len) {
+ gve_free_buffer(rx, buf_state);
+ return 0;
+ }
} else if (!rx->ctx.skb_head && rx->dqo.page_pool &&
netmem_is_net_iov(buf_state->page_info.netmem)) {
/* when header split is disabled, the header went to the packet