Includes changes:
* ensure MAC header offset is reset before delivering packet * ensure gro_cells_receive() and dstats_dev_add() are called with BH disabled * reduce ping count in selftest to ensure it completes within timeout -----BEGIN PGP SIGNATURE----- iJEEABYIADkWIQQKU153ubb5unbkl6Gx/ZpNW1HNdwUCafkekRsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQsf2aTVtRzXdZAAEA2yDBkZdIiALO7V5ul5Ao Y2/jFxysR5fyCMiOdxTOruwBAJaX9KExSE2QucHKOBFLmrjIIqwI5Br6whljdZKt n1YE =UhhZ -----END PGP SIGNATURE----- Merge tag 'ovpn-net-20260504' of https://github.com/OpenVPN/ovpn-net-next Antonio Quartulli says: ==================== Includes changes: * ensure MAC header offset is reset before delivering packet * ensure gro_cells_receive() and dstats_dev_add() are called with BH disabled * reduce ping count in selftest to ensure it completes within timeout * tag 'ovpn-net-20260504' of https://github.com/OpenVPN/ovpn-net-next: selftests: ovpn: reduce ping count in test.sh ovpn: ensure packet delivery happens with BH disabled ovpn: reset MAC header before passing skb up ==================== Link: https://patch.msgid.link/20260504230305.2681646-1-antonio@openvpn.net Signed-off-by: Jakub Kicinski <kuba@kernel.org>master
commit
f4eac70d1e
|
|
@ -85,17 +85,24 @@ static void ovpn_netdev_write(struct ovpn_peer *peer, struct sk_buff *skb)
|
|||
skb_scrub_packet(skb, true);
|
||||
|
||||
/* network header reset in ovpn_decrypt_post() */
|
||||
skb_reset_mac_header(skb);
|
||||
skb_reset_transport_header(skb);
|
||||
skb_reset_inner_headers(skb);
|
||||
|
||||
/* cause packet to be "received" by the interface */
|
||||
pkt_len = skb->len;
|
||||
/* we may get here in process context in case of TCP connections,
|
||||
* therefore we have to disable BHs to ensure gro_cells_receive()
|
||||
* and dev_dstats_rx_add() do not get corrupted or enter deadlock
|
||||
*/
|
||||
local_bh_disable();
|
||||
ret = gro_cells_receive(&peer->ovpn->gro_cells, skb);
|
||||
if (likely(ret == NET_RX_SUCCESS)) {
|
||||
/* update RX stats with the size of decrypted packet */
|
||||
ovpn_peer_stats_increment_rx(&peer->vpn_stats, pkt_len);
|
||||
dev_dstats_rx_add(peer->ovpn->dev, pkt_len);
|
||||
}
|
||||
local_bh_enable();
|
||||
}
|
||||
|
||||
void ovpn_decrypt_post(void *data, int ret)
|
||||
|
|
|
|||
|
|
@ -98,10 +98,10 @@ ovpn_run_basic_traffic() {
|
|||
sleep 0.3
|
||||
ovpn_cmd_ok "send baseline traffic to peer ${p}" \
|
||||
ip netns exec ovpn_peer0 \
|
||||
ping -qfc 500 -w 3 5.5.5.$((p + 1))
|
||||
ping -qfc 100 -w 3 5.5.5.$((p + 1))
|
||||
ovpn_cmd_ok "send large-payload traffic to peer ${p}" \
|
||||
ip netns exec ovpn_peer0 \
|
||||
ping -qfc 500 -s 3000 -w 3 5.5.5.$((p + 1))
|
||||
ping -qfc 100 -s 3000 -w 3 5.5.5.$((p + 1))
|
||||
|
||||
wait "${tcpdump_pid1}" || return 1
|
||||
wait "${tcpdump_pid2}" || return 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue