diff options
| -rw-r--r-- | MAINTAINERS | 2 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 7 | ||||
| -rw-r--r-- | drivers/net/netconsole.c | 5 | ||||
| -rw-r--r-- | drivers/net/pptp.c | 22 | ||||
| -rw-r--r-- | drivers/net/r8169.c | 90 | ||||
| -rw-r--r-- | drivers/net/smsc911x.c | 2 | ||||
| -rw-r--r-- | drivers/net/tg3.c | 2 | ||||
| -rw-r--r-- | include/net/ip_vs.h | 1 | ||||
| -rw-r--r-- | include/net/udplite.h | 63 | ||||
| -rw-r--r-- | net/bluetooth/l2cap_sock.c | 4 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/sock.c | 3 | ||||
| -rw-r--r-- | net/bluetooth/sco.c | 5 | ||||
| -rw-r--r-- | net/bridge/br_if.c | 9 | ||||
| -rw-r--r-- | net/bridge/br_netlink.c | 1 | ||||
| -rw-r--r-- | net/bridge/br_private.h | 1 | ||||
| -rw-r--r-- | net/core/fib_rules.c | 5 | ||||
| -rw-r--r-- | net/ipv4/tcp_minisocks.c | 1 | ||||
| -rw-r--r-- | net/l2tp/l2tp_core.c | 4 | ||||
| -rw-r--r-- | net/netfilter/ipvs/ip_vs_ctl.c | 131 | ||||
| -rw-r--r-- | net/netfilter/ipvs/ip_vs_sync.c | 6 | ||||
| -rw-r--r-- | net/netfilter/nf_conntrack_proto_gre.c | 4 | ||||
| -rw-r--r-- | net/x25/af_x25.c | 40 | ||||
| -rw-r--r-- | net/x25/x25_dev.c | 6 | ||||
| -rw-r--r-- | net/x25/x25_facilities.c | 10 | ||||
| -rw-r--r-- | net/x25/x25_in.c | 43 | ||||
| -rw-r--r-- | net/x25/x25_link.c | 3 | ||||
| -rw-r--r-- | net/x25/x25_subr.c | 14 | ||||
| -rw-r--r-- | security/security.c | 1 |
28 files changed, 330 insertions, 155 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 5483e0c93b4b..b3bc88d9c03a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -2460,7 +2460,7 @@ S: Supported | |||
| 2460 | F: drivers/infiniband/hw/ehca/ | 2460 | F: drivers/infiniband/hw/ehca/ |
| 2461 | 2461 | ||
| 2462 | EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER | 2462 | EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER |
| 2463 | M: Breno Leitao <leitao@linux.vnet.ibm.com> | 2463 | M: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> |
| 2464 | L: netdev@vger.kernel.org | 2464 | L: netdev@vger.kernel.org |
| 2465 | S: Maintained | 2465 | S: Maintained |
| 2466 | F: drivers/net/ehea/ | 2466 | F: drivers/net/ehea/ |
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 6d79b78cfc75..de3d351ccb6b 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
| @@ -1435,6 +1435,8 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb) | |||
| 1435 | struct sk_buff *skb = *pskb; | 1435 | struct sk_buff *skb = *pskb; |
| 1436 | struct slave *slave; | 1436 | struct slave *slave; |
| 1437 | struct bonding *bond; | 1437 | struct bonding *bond; |
| 1438 | void (*recv_probe)(struct sk_buff *, struct bonding *, | ||
| 1439 | struct slave *); | ||
| 1438 | 1440 | ||
| 1439 | skb = skb_share_check(skb, GFP_ATOMIC); | 1441 | skb = skb_share_check(skb, GFP_ATOMIC); |
| 1440 | if (unlikely(!skb)) | 1442 | if (unlikely(!skb)) |
| @@ -1448,11 +1450,12 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb) | |||
| 1448 | if (bond->params.arp_interval) | 1450 | if (bond->params.arp_interval) |
| 1449 | slave->dev->last_rx = jiffies; | 1451 | slave->dev->last_rx = jiffies; |
| 1450 | 1452 | ||
| 1451 | if (bond->recv_probe) { | 1453 | recv_probe = ACCESS_ONCE(bond->recv_probe); |
| 1454 | if (recv_probe) { | ||
| 1452 | struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); | 1455 | struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); |
| 1453 | 1456 | ||
| 1454 | if (likely(nskb)) { | 1457 | if (likely(nskb)) { |
| 1455 | bond->recv_probe(nskb, bond, slave); | 1458 | recv_probe(nskb, bond, slave); |
| 1456 | dev_kfree_skb(nskb); | 1459 | dev_kfree_skb(nskb); |
| 1457 | } | 1460 | } |
| 1458 | } | 1461 | } |
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index ed2a3977c6e7..e8882023576b 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c | |||
| @@ -307,6 +307,11 @@ static ssize_t store_enabled(struct netconsole_target *nt, | |||
| 307 | return err; | 307 | return err; |
| 308 | if (enabled < 0 || enabled > 1) | 308 | if (enabled < 0 || enabled > 1) |
| 309 | return -EINVAL; | 309 | return -EINVAL; |
| 310 | if (enabled == nt->enabled) { | ||
| 311 | printk(KERN_INFO "netconsole: network logging has already %s\n", | ||
| 312 | nt->enabled ? "started" : "stopped"); | ||
| 313 | return -EINVAL; | ||
| 314 | } | ||
| 310 | 315 | ||
| 311 | if (enabled) { /* 1 */ | 316 | if (enabled) { /* 1 */ |
| 312 | 317 | ||
diff --git a/drivers/net/pptp.c b/drivers/net/pptp.c index eae542a7e987..89f829f5f725 100644 --- a/drivers/net/pptp.c +++ b/drivers/net/pptp.c | |||
| @@ -285,8 +285,10 @@ static int pptp_xmit(struct ppp_channel *chan, struct sk_buff *skb) | |||
| 285 | ip_send_check(iph); | 285 | ip_send_check(iph); |
| 286 | 286 | ||
| 287 | ip_local_out(skb); | 287 | ip_local_out(skb); |
| 288 | return 1; | ||
| 288 | 289 | ||
| 289 | tx_error: | 290 | tx_error: |
| 291 | kfree_skb(skb); | ||
| 290 | return 1; | 292 | return 1; |
| 291 | } | 293 | } |
| 292 | 294 | ||
| @@ -305,11 +307,18 @@ static int pptp_rcv_core(struct sock *sk, struct sk_buff *skb) | |||
| 305 | } | 307 | } |
| 306 | 308 | ||
| 307 | header = (struct pptp_gre_header *)(skb->data); | 309 | header = (struct pptp_gre_header *)(skb->data); |
| 310 | headersize = sizeof(*header); | ||
| 308 | 311 | ||
| 309 | /* test if acknowledgement present */ | 312 | /* test if acknowledgement present */ |
| 310 | if (PPTP_GRE_IS_A(header->ver)) { | 313 | if (PPTP_GRE_IS_A(header->ver)) { |
| 311 | __u32 ack = (PPTP_GRE_IS_S(header->flags)) ? | 314 | __u32 ack; |
| 312 | header->ack : header->seq; /* ack in different place if S = 0 */ | 315 | |
| 316 | if (!pskb_may_pull(skb, headersize)) | ||
| 317 | goto drop; | ||
| 318 | header = (struct pptp_gre_header *)(skb->data); | ||
| 319 | |||
| 320 | /* ack in different place if S = 0 */ | ||
| 321 | ack = PPTP_GRE_IS_S(header->flags) ? header->ack : header->seq; | ||
| 313 | 322 | ||
| 314 | ack = ntohl(ack); | 323 | ack = ntohl(ack); |
| 315 | 324 | ||
| @@ -318,21 +327,18 @@ static int pptp_rcv_core(struct sock *sk, struct sk_buff *skb) | |||
| 318 | /* also handle sequence number wrap-around */ | 327 | /* also handle sequence number wrap-around */ |
| 319 | if (WRAPPED(ack, opt->ack_recv)) | 328 | if (WRAPPED(ack, opt->ack_recv)) |
| 320 | opt->ack_recv = ack; | 329 | opt->ack_recv = ack; |
| 330 | } else { | ||
| 331 | headersize -= sizeof(header->ack); | ||
| 321 | } | 332 | } |
| 322 | |||
| 323 | /* test if payload present */ | 333 | /* test if payload present */ |
| 324 | if (!PPTP_GRE_IS_S(header->flags)) | 334 | if (!PPTP_GRE_IS_S(header->flags)) |
| 325 | goto drop; | 335 | goto drop; |
| 326 | 336 | ||
| 327 | headersize = sizeof(*header); | ||
| 328 | payload_len = ntohs(header->payload_len); | 337 | payload_len = ntohs(header->payload_len); |
| 329 | seq = ntohl(header->seq); | 338 | seq = ntohl(header->seq); |
| 330 | 339 | ||
| 331 | /* no ack present? */ | ||
| 332 | if (!PPTP_GRE_IS_A(header->ver)) | ||
| 333 | headersize -= sizeof(header->ack); | ||
| 334 | /* check for incomplete packet (length smaller than expected) */ | 340 | /* check for incomplete packet (length smaller than expected) */ |
| 335 | if (skb->len - headersize < payload_len) | 341 | if (!pskb_may_pull(skb, headersize + payload_len)) |
| 336 | goto drop; | 342 | goto drop; |
| 337 | 343 | ||
| 338 | payload = skb->data + headersize; | 344 | payload = skb->data + headersize; |
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index c23667017922..6d657cabb951 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
| @@ -2859,7 +2859,7 @@ static void rtl8168e_2_hw_phy_config(struct rtl8169_private *tp) | |||
| 2859 | rtl_writephy(tp, 0x1f, 0x0004); | 2859 | rtl_writephy(tp, 0x1f, 0x0004); |
| 2860 | rtl_writephy(tp, 0x1f, 0x0007); | 2860 | rtl_writephy(tp, 0x1f, 0x0007); |
| 2861 | rtl_writephy(tp, 0x1e, 0x0020); | 2861 | rtl_writephy(tp, 0x1e, 0x0020); |
| 2862 | rtl_w1w0_phy(tp, 0x06, 0x0000, 0x0100); | 2862 | rtl_w1w0_phy(tp, 0x15, 0x0000, 0x0100); |
| 2863 | rtl_writephy(tp, 0x1f, 0x0002); | 2863 | rtl_writephy(tp, 0x1f, 0x0002); |
| 2864 | rtl_writephy(tp, 0x1f, 0x0000); | 2864 | rtl_writephy(tp, 0x1f, 0x0000); |
| 2865 | rtl_writephy(tp, 0x0d, 0x0007); | 2865 | rtl_writephy(tp, 0x0d, 0x0007); |
| @@ -3316,6 +3316,37 @@ static void __devinit rtl_init_mdio_ops(struct rtl8169_private *tp) | |||
| 3316 | } | 3316 | } |
| 3317 | } | 3317 | } |
| 3318 | 3318 | ||
| 3319 | static void rtl_wol_suspend_quirk(struct rtl8169_private *tp) | ||
| 3320 | { | ||
| 3321 | void __iomem *ioaddr = tp->mmio_addr; | ||
| 3322 | |||
| 3323 | switch (tp->mac_version) { | ||
| 3324 | case RTL_GIGA_MAC_VER_29: | ||
| 3325 | case RTL_GIGA_MAC_VER_30: | ||
