Skip to content

Commit

Permalink
Merge branch 'udp-a-few-fixes'
Browse files Browse the repository at this point in the history
Paolo Abeni says:

====================
udp: a few fixes

This series includes some UDP-related fixlet. All this stuff has been
pointed out by the sparse tool. The first two patches are just annotation
related, while the last 2 cover some very unlikely races.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Feb 23, 2019
2 parents 6ff7b06 + 92b9536 commit 40e8f0b
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
6 changes: 4 additions & 2 deletions net/ipv4/udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -562,10 +562,12 @@ static int __udp4_lib_err_encap_no_sk(struct sk_buff *skb, u32 info)

for (i = 0; i < MAX_IPTUN_ENCAP_OPS; i++) {
int (*handler)(struct sk_buff *skb, u32 info);
const struct ip_tunnel_encap_ops *encap;

if (!iptun_encaps[i])
encap = rcu_dereference(iptun_encaps[i]);
if (!encap)
continue;
handler = rcu_dereference(iptun_encaps[i]->err_handler);
handler = encap->err_handler;
if (handler && !handler(skb, info))
return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion net/ipv6/fou6.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ static int gue6_build_header(struct sk_buff *skb, struct ip_tunnel_encap *e,

static int gue6_err_proto_handler(int proto, struct sk_buff *skb,
struct inet6_skb_parm *opt,
u8 type, u8 code, int offset, u32 info)
u8 type, u8 code, int offset, __be32 info)
{
const struct inet6_protocol *ipprot;

Expand Down
12 changes: 7 additions & 5 deletions net/ipv6/udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,8 +288,8 @@ int udpv6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
int peeked, peeking, off;
int err;
int is_udplite = IS_UDPLITE(sk);
struct udp_mib __percpu *mib;
bool checksum_valid = false;
struct udp_mib *mib;
int is_udp4;

if (flags & MSG_ERRQUEUE)
Expand Down Expand Up @@ -420,17 +420,19 @@ EXPORT_SYMBOL(udpv6_encap_enable);
*/
static int __udp6_lib_err_encap_no_sk(struct sk_buff *skb,
struct inet6_skb_parm *opt,
u8 type, u8 code, int offset, u32 info)
u8 type, u8 code, int offset, __be32 info)
{
int i;

for (i = 0; i < MAX_IPTUN_ENCAP_OPS; i++) {
int (*handler)(struct sk_buff *skb, struct inet6_skb_parm *opt,
u8 type, u8 code, int offset, u32 info);
u8 type, u8 code, int offset, __be32 info);
const struct ip6_tnl_encap_ops *encap;

if (!ip6tun_encaps[i])
encap = rcu_dereference(ip6tun_encaps[i]);
if (!encap)
continue;
handler = rcu_dereference(ip6tun_encaps[i]->err_handler);
handler = encap->err_handler;
if (handler && !handler(skb, opt, type, code, offset, info))
return 0;
}
Expand Down

0 comments on commit 40e8f0b

Please sign in to comment.