diff options
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 29213b51c499..846f4757eb8d 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -509,7 +509,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) | |||
509 | int is_udplite = IS_UDPLITE(sk); | 509 | int is_udplite = IS_UDPLITE(sk); |
510 | 510 | ||
511 | if (!ipv6_addr_any(&inet6_sk(sk)->daddr)) | 511 | if (!ipv6_addr_any(&inet6_sk(sk)->daddr)) |
512 | sock_rps_save_rxhash(sk, skb->rxhash); | 512 | sock_rps_save_rxhash(sk, skb); |
513 | 513 | ||
514 | if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) | 514 | if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) |
515 | goto drop; | 515 | goto drop; |
@@ -533,7 +533,7 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb) | |||
533 | } | 533 | } |
534 | } | 534 | } |
535 | 535 | ||
536 | if (rcu_dereference_raw(sk->sk_filter)) { | 536 | if (rcu_access_pointer(sk->sk_filter)) { |
537 | if (udp_lib_checksum_complete(skb)) | 537 | if (udp_lib_checksum_complete(skb)) |
538 | goto drop; | 538 | goto drop; |
539 | } | 539 | } |
@@ -1090,8 +1090,8 @@ do_udp_sendmsg: | |||
1090 | memset(opt, 0, sizeof(struct ipv6_txoptions)); | 1090 | memset(opt, 0, sizeof(struct ipv6_txoptions)); |
1091 | opt->tot_len = sizeof(*opt); | 1091 | opt->tot_len = sizeof(*opt); |
1092 | 1092 | ||
1093 | err = datagram_send_ctl(sock_net(sk), msg, &fl6, opt, &hlimit, | 1093 | err = datagram_send_ctl(sock_net(sk), sk, msg, &fl6, opt, |
1094 | &tclass, &dontfrag); | 1094 | &hlimit, &tclass, &dontfrag); |
1095 | if (err < 0) { | 1095 | if (err < 0) { |
1096 | fl6_sock_release(flowlabel); | 1096 | fl6_sock_release(flowlabel); |
1097 | return err; | 1097 | return err; |
@@ -1424,13 +1424,19 @@ int udp6_seq_show(struct seq_file *seq, void *v) | |||
1424 | return 0; | 1424 | return 0; |
1425 | } | 1425 | } |
1426 | 1426 | ||
1427 | static const struct file_operations udp6_afinfo_seq_fops = { | ||
1428 | .owner = THIS_MODULE, | ||
1429 | .open = udp_seq_open, | ||
1430 | .read = seq_read, | ||
1431 | .llseek = seq_lseek, | ||
1432 | .release = seq_release_net | ||
1433 | }; | ||
1434 | |||
1427 | static struct udp_seq_afinfo udp6_seq_afinfo = { | 1435 | static struct udp_seq_afinfo udp6_seq_afinfo = { |
1428 | .name = "udp6", | 1436 | .name = "udp6", |
1429 | .family = AF_INET6, | 1437 | .family = AF_INET6, |
1430 | .udp_table = &udp_table, | 1438 | .udp_table = &udp_table, |
1431 | .seq_fops = { | 1439 | .seq_fops = &udp6_afinfo_seq_fops, |
1432 | .owner = THIS_MODULE, | ||
1433 | }, | ||
1434 | .seq_ops = { | 1440 | .seq_ops = { |
1435 | .show = udp6_seq_show, | 1441 | .show = udp6_seq_show, |
1436 | }, | 1442 | }, |