net: atlantic: Fix NULL dereference of skb pointer in
authorDaniil Maximov <daniil31415it@gmail.com>
Mon, 4 Dec 2023 08:58:10 +0000 (11:58 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Wed, 6 Dec 2023 10:26:46 +0000 (11:26 +0100)
commitcbe860be36095e68e4e5561ab43610982fb429fd
treeab935381d621f24d6088f6a1e356d5e6bd7b2ea9
parent7037d95a047cd89b1f680eed253c6ab586bef1ed
net: atlantic: Fix NULL dereference of skb pointer in

If is_ptp_ring == true in the loop of __aq_ring_xdp_clean function,
then a timestamp is stored from a packet in a field of skb object,
which is not allocated at the moment of the call (skb == NULL).

Generalize aq_ptp_extract_ts and other affected functions so they don't
work with struct sk_buff*, but with struct skb_shared_hwtstamps*.

Found by Linux Verification Center (linuxtesting.org) with SVACE

Fixes: 26efaef759a1 ("net: atlantic: Implement xdp data plane")
Signed-off-by: Daniil Maximov <daniil31415it@gmail.com>
Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
Link: https://lore.kernel.org/r/20231204085810.1681386-1-daniil31415it@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/aquantia/atlantic/aq_ptp.c
drivers/net/ethernet/aquantia/atlantic/aq_ptp.h
drivers/net/ethernet/aquantia/atlantic/aq_ring.c