linux/drivers/net/ethernet/google/gve
Eric Dumazet 817c7cd204 gve: fix frag_list chaining
gve_rx_append_frags() is able to build skbs chained with frag_list,
like GRO engine.

Problem is that shinfo->frag_list should only be used
for the head of the chain.

All other links should use skb->next pointer.

Otherwise, built skbs are not valid and can cause crashes.

Equivalent code in GRO (skb_gro_receive()) is:

    if (NAPI_GRO_CB(p)->last == p)
        skb_shinfo(p)->frag_list = skb;
    else
        NAPI_GRO_CB(p)->last->next = skb;
    NAPI_GRO_CB(p)->last = skb;

Fixes: 9b8dd5e5ea ("gve: DQO: Add RX path")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Bailey Forrest <bcf@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Cc: Catherine Sullivan <csully@google.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2023-09-04 06:52:27 +01:00
..
gve.h gve: RX path for DQO-QPL 2023-08-06 08:34:36 +01:00
gve_adminq.c gve: Control path for DQO-QPL 2023-08-06 08:34:36 +01:00
gve_adminq.h gve: Control path for DQO-QPL 2023-08-06 08:34:36 +01:00
gve_desc.h gve: trivial spell fix Recive to Receive 2023-07-14 10:28:17 +01:00
gve_desc_dqo.h
gve_dqo.h
gve_ethtool.c gve: unify driver name usage 2023-07-10 08:29:55 +01:00
gve_main.c gve: Control path for DQO-QPL 2023-08-06 08:34:36 +01:00
gve_register.h
gve_rx.c
gve_rx_dqo.c gve: fix frag_list chaining 2023-09-04 06:52:27 +01:00
gve_tx.c gve: use vmalloc_array and vcalloc 2023-06-27 09:30:23 -07:00
gve_tx_dqo.c gve: Tx path for DQO-QPL 2023-08-06 08:34:36 +01:00
gve_utils.c
gve_utils.h
Makefile