Re: [PATCH net-next v14 08/22] ovpn: implement basic RX path (UDP)
flat view
From: Simon Horman <horms@kernel.org>
Date: 2024-12-10 16:44:21
Also in:
linux-kselftest, lkml
On Mon, Dec 09, 2024 at 09:53:17AM +0100, Antonio Quartulli wrote:
Packets received over the socket are forwarded to the user device. Implementation is UDP only. TCP will be added by a later patch. Note: no decryption/decapsulation exists yet, packets are forwarded as they arrive without much processing. Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
...
quoted hunk ↗ jump to hunk
diff --git a/drivers/net/ovpn/udp.c b/drivers/net/ovpn/udp.c index c0e7aa289ad3345fcd91e7c890f70961300c356f..975392fc39bc4c0107a07a53795afecd88d72c53 100644 --- a/drivers/net/ovpn/udp.c +++ b/drivers/net/ovpn/udp.c@@ -23,9 +23,83 @@ #include "bind.h" #include "io.h" #include "peer.h" +#include "proto.h" #include "socket.h" #include "udp.h" +/** + * ovpn_udp_encap_recv - Start processing a received UDP packet. + * @sk: socket over which the packet was received + * @skb: the received packet + * + * If the first byte of the payload is DATA_V2, the packet is further processed, + * otherwise it is forwarded to the UDP stack for delivery to user space. + * + * Return: + * 0 if skb was consumed or dropped + * >0 if skb should be passed up to userspace as UDP (packet not consumed) + * <0 if skb should be resubmitted as proto -N (packet not consumed) + */ +static int ovpn_udp_encap_recv(struct sock *sk, struct sk_buff *skb) +{ + struct ovpn_priv *ovpn; + struct ovpn_peer *peer; + u32 peer_id; + u8 opcode; + + ovpn = ovpn_from_udp_sock(sk); + if (unlikely(!ovpn)) { + net_err_ratelimited("%s: cannot obtain ovpn object from UDP socket\n", + netdev_name(ovpn->dev));
Hi Antonio, If we reach here then ovpn is NULL. But the like above dereferences it. Flagged by Smatch.
+ goto drop_noovpn; + }
... -- pw-bot: changes-requested