summaryrefslogtreecommitdiff
path: root/net/ipv4/udp.c
diff options
context:
space:
mode:
authorJoel Stanley <joel@jms.id.au>2019-07-04 04:43:37 +0300
committerJoel Stanley <joel@jms.id.au>2019-07-04 04:43:41 +0300
commit2caf12c9ed84a39b383d0f237d1506b7e9a95bdf (patch)
tree8ba503d4cb7079f73d4b71f306c3e0c120cec53b /net/ipv4/udp.c
parentd83aec28b086ee676056638d77ac93b06ec3d4b1 (diff)
parent8584aaf1c3262ca17d1e4a614ede9179ef462bb0 (diff)
downloadlinux-dev-5.1.tar.xz
Merge tag 'v5.1.16' into dev-5.1dev-5.1
This is the 5.1.16 stable release Signed-off-by: Joel Stanley <joel@jms.id.au>
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r--net/ipv4/udp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 85151ba9e436..4f9d99d8d324 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -498,7 +498,11 @@ static inline struct sock *__udp4_lib_lookup_skb(struct sk_buff *skb,
struct sock *udp4_lib_lookup_skb(struct sk_buff *skb,
__be16 sport, __be16 dport)
{
- return __udp4_lib_lookup_skb(skb, sport, dport, &udp_table);
+ const struct iphdr *iph = ip_hdr(skb);
+
+ return __udp4_lib_lookup(dev_net(skb->dev), iph->saddr, sport,
+ iph->daddr, dport, inet_iif(skb),
+ inet_sdif(skb), &udp_table, NULL);
}
EXPORT_SYMBOL_GPL(udp4_lib_lookup_skb);
@@ -1778,6 +1782,10 @@ try_again:
sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
*addr_len = sizeof(*sin);
+
+ if (cgroup_bpf_enabled)
+ BPF_CGROUP_RUN_PROG_UDP4_RECVMSG_LOCK(sk,
+ (struct sockaddr *)sin);
}
if (udp_sk(sk)->gro_enabled)