Commit 0a4cf2c8786219b4871c37240ab9787a61d843ee
Exists in
master
and in
39 other branches
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: dsa: fix master interface allmulti/promisc handling dsa: fix skb->pkt_type when mac address of slave interface differs net: fix setting of skb->tail in skb_recycle_check() net: fix /proc/net/snmp as memory corruptor mac80211: fix a buffer overrun in station debug code netfilter: payload_len is be16, add size of struct rather than size of pointer ipv6: fix ip6_mr_init error path [4/4] dca: fixup initialization dependency [3/4] I/OAT: fix async_tx.callback checking [2/4] I/OAT: fix dma_pin_iovec_pages() error handling [1/4] I/OAT: fix channel resources free for not allocated channels ssb: Fix DMA-API compilation for non-PCI systems SSB: hide empty sub menu vlan: Fix typos in proc output string [netdrvr] usb/hso: Cleanup rfkill error handling sfc: Correct address of gPXE boot configuration in EEPROM el3_common_init() should be __devinit, not __init hso: rfkill type should be WWAN mlx4_en: Start port error flow bug fix af_key: mark policy as dead before destroying
Showing 19 changed files Side-by-side Diff
- drivers/dca/dca-core.c
- drivers/dma/ioat_dma.c
- drivers/dma/iovlock.c
- drivers/net/mlx4/en_netdev.c
- drivers/net/sfc/ethtool.c
- drivers/net/usb/hso.c
- drivers/ssb/Kconfig
- include/linux/ssb/ssb.h
- net/8021q/vlanproc.c
- net/core/skbuff.c
- net/dsa/slave.c
- net/dsa/tag_dsa.c
- net/dsa/tag_edsa.c
- net/dsa/tag_trailer.c
- net/ipv4/proc.c
- net/ipv6/ip6mr.c
- net/key/af_key.c
- net/mac80211/debugfs_sta.c
- net/netfilter/ipvs/ip_vs_xmit.c
drivers/dca/dca-core.c
drivers/dma/ioat_dma.c
... | ... | @@ -525,7 +525,7 @@ |
525 | 525 | } |
526 | 526 | |
527 | 527 | hw->ctl = IOAT_DMA_DESCRIPTOR_CTL_CP_STS; |
528 | - if (new->async_tx.callback) { | |
528 | + if (first->async_tx.callback) { | |
529 | 529 | hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_INT_GN; |
530 | 530 | if (first != new) { |
531 | 531 | /* move callback into to last desc */ |
... | ... | @@ -617,7 +617,7 @@ |
617 | 617 | } |
618 | 618 | |
619 | 619 | hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_CP_STS; |
620 | - if (new->async_tx.callback) { | |
620 | + if (first->async_tx.callback) { | |
621 | 621 | hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_INT_GN; |
622 | 622 | if (first != new) { |
623 | 623 | /* move callback into to last desc */ |
... | ... | @@ -807,6 +807,12 @@ |
807 | 807 | struct ioat_desc_sw *desc, *_desc; |
808 | 808 | int in_use_descs = 0; |
809 | 809 | |
810 | + /* Before freeing channel resources first check | |
811 | + * if they have been previously allocated for this channel. | |
812 | + */ | |
813 | + if (ioat_chan->desccount == 0) | |
814 | + return; | |
815 | + | |
810 | 816 | tasklet_disable(&ioat_chan->cleanup_task); |
811 | 817 | ioat_dma_memcpy_cleanup(ioat_chan); |
812 | 818 | |
... | ... | @@ -869,6 +875,7 @@ |
869 | 875 | ioat_chan->last_completion = ioat_chan->completion_addr = 0; |
870 | 876 | ioat_chan->pending = 0; |
871 | 877 | ioat_chan->dmacount = 0; |
878 | + ioat_chan->desccount = 0; | |
872 | 879 | ioat_chan->watchdog_completion = 0; |
873 | 880 | ioat_chan->last_compl_desc_addr_hw = 0; |
874 | 881 | ioat_chan->watchdog_tcp_cookie = |
drivers/dma/iovlock.c
... | ... | @@ -55,7 +55,6 @@ |
55 | 55 | int nr_iovecs = 0; |
56 | 56 | int iovec_len_used = 0; |
57 | 57 | int iovec_pages_used = 0; |
58 | - long err; | |
59 | 58 | |
60 | 59 | /* don't pin down non-user-based iovecs */ |
61 | 60 | if (segment_eq(get_fs(), KERNEL_DS)) |
62 | 61 | |
63 | 62 | |
64 | 63 | |
65 | 64 | |
... | ... | @@ -72,23 +71,21 @@ |
72 | 71 | local_list = kmalloc(sizeof(*local_list) |
73 | 72 | + (nr_iovecs * sizeof (struct dma_page_list)) |
74 | 73 | + (iovec_pages_used * sizeof (struct page*)), GFP_KERNEL); |
75 | - if (!local_list) { | |
76 | - err = -ENOMEM; | |
74 | + if (!local_list) | |
77 | 75 | goto out; |
78 | - } | |
79 | 76 | |
80 | 77 | /* list of pages starts right after the page list array */ |
81 | 78 | pages = (struct page **) &local_list->page_list[nr_iovecs]; |
82 | 79 | |
80 | + local_list->nr_iovecs = 0; | |
81 | + | |
83 | 82 | for (i = 0; i < nr_iovecs; i++) { |
84 | 83 | struct dma_page_list *page_list = &local_list->page_list[i]; |
85 | 84 | |
86 | 85 | len -= iov[i].iov_len; |
87 | 86 | |
88 | - if (!access_ok(VERIFY_WRITE, iov[i].iov_base, iov[i].iov_len)) { | |
89 | - err = -EFAULT; | |
87 | + if (!access_ok(VERIFY_WRITE, iov[i].iov_base, iov[i].iov_len)) | |
90 | 88 | goto unpin; |
91 | - } | |
92 | 89 | |
93 | 90 | page_list->nr_pages = num_pages_spanned(&iov[i]); |
94 | 91 | page_list->base_address = iov[i].iov_base; |
95 | 92 | |
... | ... | @@ -109,10 +106,8 @@ |
109 | 106 | NULL); |
110 | 107 | up_read(¤t->mm->mmap_sem); |
111 | 108 | |
112 | - if (ret != page_list->nr_pages) { | |
113 | - err = -ENOMEM; | |
109 | + if (ret != page_list->nr_pages) | |
114 | 110 | goto unpin; |
115 | - } | |
116 | 111 | |
117 | 112 | local_list->nr_iovecs = i + 1; |
118 | 113 | } |
... | ... | @@ -122,7 +117,7 @@ |
122 | 117 | unpin: |
123 | 118 | dma_unpin_iovec_pages(local_list); |
124 | 119 | out: |
125 | - return ERR_PTR(err); | |
120 | + return NULL; | |
126 | 121 | } |
127 | 122 | |
128 | 123 | void dma_unpin_iovec_pages(struct dma_pinned_list *pinned_list) |
drivers/net/mlx4/en_netdev.c
... | ... | @@ -706,7 +706,7 @@ |
706 | 706 | mlx4_en_release_rss_steer(priv); |
707 | 707 | rx_err: |
708 | 708 | for (i = 0; i < priv->rx_ring_num; i++) |
709 | - mlx4_en_deactivate_rx_ring(priv, &priv->rx_ring[rx_index]); | |
709 | + mlx4_en_deactivate_rx_ring(priv, &priv->rx_ring[i]); | |
710 | 710 | cq_err: |
711 | 711 | while (rx_index--) |
712 | 712 | mlx4_en_deactivate_cq(priv, &priv->rx_cq[rx_index]); |
drivers/net/sfc/ethtool.c
... | ... | @@ -174,8 +174,8 @@ |
174 | 174 | |
175 | 175 | /* EEPROM range with gPXE configuration */ |
176 | 176 | #define EFX_ETHTOOL_EEPROM_MAGIC 0xEFAB |
177 | -#define EFX_ETHTOOL_EEPROM_MIN 0x100U | |
178 | -#define EFX_ETHTOOL_EEPROM_MAX 0x400U | |
177 | +#define EFX_ETHTOOL_EEPROM_MIN 0x800U | |
178 | +#define EFX_ETHTOOL_EEPROM_MAX 0x1800U | |
179 | 179 | |
180 | 180 | /************************************************************************** |
181 | 181 | * |
drivers/net/usb/hso.c
... | ... | @@ -2184,19 +2184,20 @@ |
2184 | 2184 | struct usb_interface *interface) |
2185 | 2185 | { |
2186 | 2186 | struct hso_net *hso_net = dev2net(hso_dev); |
2187 | - struct device *dev = hso_dev->dev; | |
2187 | + struct device *dev = &hso_net->net->dev; | |
2188 | 2188 | char *rfkn; |
2189 | 2189 | |
2190 | 2190 | hso_net->rfkill = rfkill_allocate(&interface_to_usbdev(interface)->dev, |
2191 | - RFKILL_TYPE_WLAN); | |
2191 | + RFKILL_TYPE_WWAN); | |
2192 | 2192 | if (!hso_net->rfkill) { |
2193 | - dev_err(dev, "%s - Out of memory", __func__); | |
2193 | + dev_err(dev, "%s - Out of memory\n", __func__); | |
2194 | 2194 | return; |
2195 | 2195 | } |
2196 | 2196 | rfkn = kzalloc(20, GFP_KERNEL); |
2197 | 2197 | if (!rfkn) { |
2198 | 2198 | rfkill_free(hso_net->rfkill); |
2199 | - dev_err(dev, "%s - Out of memory", __func__); | |
2199 | + hso_net->rfkill = NULL; | |
2200 | + dev_err(dev, "%s - Out of memory\n", __func__); | |
2200 | 2201 | return; |
2201 | 2202 | } |
2202 | 2203 | snprintf(rfkn, 20, "hso-%d", |
... | ... | @@ -2209,7 +2210,8 @@ |
2209 | 2210 | kfree(rfkn); |
2210 | 2211 | hso_net->rfkill->name = NULL; |
2211 | 2212 | rfkill_free(hso_net->rfkill); |
2212 | - dev_err(dev, "%s - Failed to register rfkill", __func__); | |
2213 | + hso_net->rfkill = NULL; | |
2214 | + dev_err(dev, "%s - Failed to register rfkill\n", __func__); | |
2213 | 2215 | return; |
2214 | 2216 | } |
2215 | 2217 | } |
drivers/ssb/Kconfig
include/linux/ssb/ssb.h
... | ... | @@ -427,12 +427,16 @@ |
427 | 427 | { |
428 | 428 | switch (dev->bus->bustype) { |
429 | 429 | case SSB_BUSTYPE_PCI: |
430 | +#ifdef CONFIG_SSB_PCIHOST | |
430 | 431 | return pci_dma_mapping_error(dev->bus->host_pci, addr); |
432 | +#endif | |
433 | + break; | |
431 | 434 | case SSB_BUSTYPE_SSB: |
432 | 435 | return dma_mapping_error(dev->dev, addr); |
433 | 436 | default: |
434 | - __ssb_dma_not_implemented(dev); | |
437 | + break; | |
435 | 438 | } |
439 | + __ssb_dma_not_implemented(dev); | |
436 | 440 | return -ENOSYS; |
437 | 441 | } |
438 | 442 | |
439 | 443 | |
440 | 444 | |
441 | 445 | |
... | ... | @@ -441,12 +445,16 @@ |
441 | 445 | { |
442 | 446 | switch (dev->bus->bustype) { |
443 | 447 | case SSB_BUSTYPE_PCI: |
448 | +#ifdef CONFIG_SSB_PCIHOST | |
444 | 449 | return pci_map_single(dev->bus->host_pci, p, size, dir); |
450 | +#endif | |
451 | + break; | |
445 | 452 | case SSB_BUSTYPE_SSB: |
446 | 453 | return dma_map_single(dev->dev, p, size, dir); |
447 | 454 | default: |
448 | - __ssb_dma_not_implemented(dev); | |
455 | + break; | |
449 | 456 | } |
457 | + __ssb_dma_not_implemented(dev); | |
450 | 458 | return 0; |
451 | 459 | } |
452 | 460 | |
453 | 461 | |
454 | 462 | |
455 | 463 | |
... | ... | @@ -455,14 +463,18 @@ |
455 | 463 | { |
456 | 464 | switch (dev->bus->bustype) { |
457 | 465 | case SSB_BUSTYPE_PCI: |
466 | +#ifdef CONFIG_SSB_PCIHOST | |
458 | 467 | pci_unmap_single(dev->bus->host_pci, dma_addr, size, dir); |
459 | 468 | return; |
469 | +#endif | |
470 | + break; | |
460 | 471 | case SSB_BUSTYPE_SSB: |
461 | 472 | dma_unmap_single(dev->dev, dma_addr, size, dir); |
462 | 473 | return; |
463 | 474 | default: |
464 | - __ssb_dma_not_implemented(dev); | |
475 | + break; | |
465 | 476 | } |
477 | + __ssb_dma_not_implemented(dev); | |
466 | 478 | } |
467 | 479 | |
468 | 480 | static inline void ssb_dma_sync_single_for_cpu(struct ssb_device *dev, |
469 | 481 | |
470 | 482 | |
471 | 483 | |
... | ... | @@ -472,15 +484,19 @@ |
472 | 484 | { |
473 | 485 | switch (dev->bus->bustype) { |
474 | 486 | case SSB_BUSTYPE_PCI: |
487 | +#ifdef CONFIG_SSB_PCIHOST | |
475 | 488 | pci_dma_sync_single_for_cpu(dev->bus->host_pci, dma_addr, |
476 | 489 | size, dir); |
477 | 490 | return; |
491 | +#endif | |
492 | + break; | |
478 | 493 | case SSB_BUSTYPE_SSB: |
479 | 494 | dma_sync_single_for_cpu(dev->dev, dma_addr, size, dir); |
480 | 495 | return; |
481 | 496 | default: |
482 | - __ssb_dma_not_implemented(dev); | |
497 | + break; | |
483 | 498 | } |
499 | + __ssb_dma_not_implemented(dev); | |
484 | 500 | } |
485 | 501 | |
486 | 502 | static inline void ssb_dma_sync_single_for_device(struct ssb_device *dev, |
487 | 503 | |
488 | 504 | |
489 | 505 | |
... | ... | @@ -490,15 +506,19 @@ |
490 | 506 | { |
491 | 507 | switch (dev->bus->bustype) { |
492 | 508 | case SSB_BUSTYPE_PCI: |
509 | +#ifdef CONFIG_SSB_PCIHOST | |
493 | 510 | pci_dma_sync_single_for_device(dev->bus->host_pci, dma_addr, |
494 | 511 | size, dir); |
495 | 512 | return; |
513 | +#endif | |
514 | + break; | |
496 | 515 | case SSB_BUSTYPE_SSB: |
497 | 516 | dma_sync_single_for_device(dev->dev, dma_addr, size, dir); |
498 | 517 | return; |
499 | 518 | default: |
500 | - __ssb_dma_not_implemented(dev); | |
519 | + break; | |
501 | 520 | } |
521 | + __ssb_dma_not_implemented(dev); | |
502 | 522 | } |
503 | 523 | |
504 | 524 | static inline void ssb_dma_sync_single_range_for_cpu(struct ssb_device *dev, |
505 | 525 | |
506 | 526 | |
507 | 527 | |
... | ... | @@ -509,17 +529,21 @@ |
509 | 529 | { |
510 | 530 | switch (dev->bus->bustype) { |
511 | 531 | case SSB_BUSTYPE_PCI: |
532 | +#ifdef CONFIG_SSB_PCIHOST | |
512 | 533 | /* Just sync everything. That's all the PCI API can do. */ |
513 | 534 | pci_dma_sync_single_for_cpu(dev->bus->host_pci, dma_addr, |
514 | 535 | offset + size, dir); |
515 | 536 | return; |
537 | +#endif | |
538 | + break; | |
516 | 539 | case SSB_BUSTYPE_SSB: |
517 | 540 | dma_sync_single_range_for_cpu(dev->dev, dma_addr, offset, |
518 | 541 | size, dir); |
519 | 542 | return; |
520 | 543 | default: |
521 | - __ssb_dma_not_implemented(dev); | |
544 | + break; | |
522 | 545 | } |
546 | + __ssb_dma_not_implemented(dev); | |
523 | 547 | } |
524 | 548 | |
525 | 549 | static inline void ssb_dma_sync_single_range_for_device(struct ssb_device *dev, |
526 | 550 | |
527 | 551 | |
528 | 552 | |
... | ... | @@ -530,17 +554,21 @@ |
530 | 554 | { |
531 | 555 | switch (dev->bus->bustype) { |
532 | 556 | case SSB_BUSTYPE_PCI: |
557 | +#ifdef CONFIG_SSB_PCIHOST | |
533 | 558 | /* Just sync everything. That's all the PCI API can do. */ |
534 | 559 | pci_dma_sync_single_for_device(dev->bus->host_pci, dma_addr, |
535 | 560 | offset + size, dir); |
536 | 561 | return; |
562 | +#endif | |
563 | + break; | |
537 | 564 | case SSB_BUSTYPE_SSB: |
538 | 565 | dma_sync_single_range_for_device(dev->dev, dma_addr, offset, |
539 | 566 | size, dir); |
540 | 567 | return; |
541 | 568 | default: |
542 | - __ssb_dma_not_implemented(dev); | |
569 | + break; | |
543 | 570 | } |
571 | + __ssb_dma_not_implemented(dev); | |
544 | 572 | } |
545 | 573 | |
546 | 574 |
net/8021q/vlanproc.c
... | ... | @@ -314,7 +314,7 @@ |
314 | 314 | dev_info->ingress_priority_map[6], |
315 | 315 | dev_info->ingress_priority_map[7]); |
316 | 316 | |
317 | - seq_printf(seq, "EGRESSS priority Mappings: "); | |
317 | + seq_printf(seq, " EGRESS priority mappings: "); | |
318 | 318 | for (i = 0; i < 16; i++) { |
319 | 319 | const struct vlan_priority_tci_mapping *mp |
320 | 320 | = dev_info->egress_priority_map[i]; |
net/core/skbuff.c
net/dsa/slave.c
... | ... | @@ -10,6 +10,7 @@ |
10 | 10 | |
11 | 11 | #include <linux/list.h> |
12 | 12 | #include <linux/netdevice.h> |
13 | +#include <linux/etherdevice.h> | |
13 | 14 | #include <linux/phy.h> |
14 | 15 | #include "dsa_priv.h" |
15 | 16 | |
16 | 17 | |
17 | 18 | |
... | ... | @@ -49,11 +50,57 @@ |
49 | 50 | /* slave device handling ****************************************************/ |
50 | 51 | static int dsa_slave_open(struct net_device *dev) |
51 | 52 | { |
53 | + struct dsa_slave_priv *p = netdev_priv(dev); | |
54 | + struct net_device *master = p->parent->master_netdev; | |
55 | + int err; | |
56 | + | |
57 | + if (!(master->flags & IFF_UP)) | |
58 | + return -ENETDOWN; | |
59 | + | |
60 | + if (compare_ether_addr(dev->dev_addr, master->dev_addr)) { | |
61 | + err = dev_unicast_add(master, dev->dev_addr, ETH_ALEN); | |
62 | + if (err < 0) | |
63 | + goto out; | |
64 | + } | |
65 | + | |
66 | + if (dev->flags & IFF_ALLMULTI) { | |
67 | + err = dev_set_allmulti(master, 1); | |
68 | + if (err < 0) | |
69 | + goto del_unicast; | |
70 | + } | |
71 | + if (dev->flags & IFF_PROMISC) { | |
72 | + err = dev_set_promiscuity(master, 1); | |
73 | + if (err < 0) | |
74 | + goto clear_allmulti; | |
75 | + } | |
76 | + | |
52 | 77 | return 0; |
78 | + | |
79 | +clear_allmulti: | |
80 | + if (dev->flags & IFF_ALLMULTI) | |
81 | + dev_set_allmulti(master, -1); | |
82 | +del_unicast: | |
83 | + if (compare_ether_addr(dev->dev_addr, master->dev_addr)) | |
84 | + dev_unicast_delete(master, dev->dev_addr, ETH_ALEN); | |
85 | +out: | |
86 | + return err; | |
53 | 87 | } |
54 | 88 | |
55 | 89 | static int dsa_slave_close(struct net_device *dev) |
56 | 90 | { |
91 | + struct dsa_slave_priv *p = netdev_priv(dev); | |
92 | + struct net_device *master = p->parent->master_netdev; | |
93 | + | |
94 | + dev_mc_unsync(master, dev); | |
95 | + dev_unicast_unsync(master, dev); | |
96 | + if (dev->flags & IFF_ALLMULTI) | |
97 | + dev_set_allmulti(master, -1); | |
98 | + if (dev->flags & IFF_PROMISC) | |
99 | + dev_set_promiscuity(master, -1); | |
100 | + | |
101 | + if (compare_ether_addr(dev->dev_addr, master->dev_addr)) | |
102 | + dev_unicast_delete(master, dev->dev_addr, ETH_ALEN); | |
103 | + | |
57 | 104 | return 0; |
58 | 105 | } |
59 | 106 | |
60 | 107 | |
... | ... | @@ -77,9 +124,30 @@ |
77 | 124 | dev_unicast_sync(master, dev); |
78 | 125 | } |
79 | 126 | |
80 | -static int dsa_slave_set_mac_address(struct net_device *dev, void *addr) | |
127 | +static int dsa_slave_set_mac_address(struct net_device *dev, void *a) | |
81 | 128 | { |
82 | - memcpy(dev->dev_addr, addr + 2, 6); | |
129 | + struct dsa_slave_priv *p = netdev_priv(dev); | |
130 | + struct net_device *master = p->parent->master_netdev; | |
131 | + struct sockaddr *addr = a; | |
132 | + int err; | |
133 | + | |
134 | + if (!is_valid_ether_addr(addr->sa_data)) | |
135 | + return -EADDRNOTAVAIL; | |
136 | + | |
137 | + if (!(dev->flags & IFF_UP)) | |
138 | + goto out; | |
139 | + | |
140 | + if (compare_ether_addr(addr->sa_data, master->dev_addr)) { | |
141 | + err = dev_unicast_add(master, addr->sa_data, ETH_ALEN); | |
142 | + if (err < 0) | |
143 | + return err; | |
144 | + } | |
145 | + | |
146 | + if (compare_ether_addr(dev->dev_addr, master->dev_addr)) | |
147 | + dev_unicast_delete(master, dev->dev_addr, ETH_ALEN); | |
148 | + | |
149 | +out: | |
150 | + memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); | |
83 | 151 | |
84 | 152 | return 0; |
85 | 153 | } |
net/dsa/tag_dsa.c
net/dsa/tag_edsa.c
net/dsa/tag_trailer.c
net/ipv4/proc.c
... | ... | @@ -237,43 +237,45 @@ |
237 | 237 | SNMP_MIB_SENTINEL |
238 | 238 | }; |
239 | 239 | |
240 | +static void icmpmsg_put_line(struct seq_file *seq, unsigned long *vals, | |
241 | + unsigned short *type, int count) | |
242 | +{ | |
243 | + int j; | |
244 | + | |
245 | + if (count) { | |
246 | + seq_printf(seq, "\nIcmpMsg:"); | |
247 | + for (j = 0; j < count; ++j) | |
248 | + seq_printf(seq, " %sType%u", | |
249 | + type[j] & 0x100 ? "Out" : "In", | |
250 | + type[j] & 0xff); | |
251 | + seq_printf(seq, "\nIcmpMsg:"); | |
252 | + for (j = 0; j < count; ++j) | |
253 | + seq_printf(seq, " %lu", vals[j]); | |
254 | + } | |
255 | +} | |
256 | + | |
240 | 257 | static void icmpmsg_put(struct seq_file *seq) |
241 | 258 | { |
242 | 259 | #define PERLINE 16 |
243 | 260 | |
244 | - int j, i, count; | |
245 | - static int out[PERLINE]; | |
261 | + int i, count; | |
262 | + unsigned short type[PERLINE]; | |
263 | + unsigned long vals[PERLINE], val; | |
246 | 264 | struct net *net = seq->private; |
247 | 265 | |
248 | 266 | count = 0; |
249 | 267 | for (i = 0; i < ICMPMSG_MIB_MAX; i++) { |
250 | - | |
251 | - if (snmp_fold_field((void **) net->mib.icmpmsg_statistics, i)) | |
252 | - out[count++] = i; | |
253 | - if (count < PERLINE) | |
254 | - continue; | |
255 | - | |
256 | - seq_printf(seq, "\nIcmpMsg:"); | |
257 | - for (j = 0; j < PERLINE; ++j) | |
258 | - seq_printf(seq, " %sType%u", i & 0x100 ? "Out" : "In", | |
259 | - i & 0xff); | |
260 | - seq_printf(seq, "\nIcmpMsg: "); | |
261 | - for (j = 0; j < PERLINE; ++j) | |
262 | - seq_printf(seq, " %lu", | |
263 | - snmp_fold_field((void **) net->mib.icmpmsg_statistics, | |
264 | - out[j])); | |
265 | - seq_putc(seq, '\n'); | |
268 | + val = snmp_fold_field((void **) net->mib.icmpmsg_statistics, i); | |
269 | + if (val) { | |
270 | + type[count] = i; | |
271 | + vals[count++] = val; | |
272 | + } | |
273 | + if (count == PERLINE) { | |
274 | + icmpmsg_put_line(seq, vals, type, count); | |
275 | + count = 0; | |
276 | + } | |
266 | 277 | } |
267 | - if (count) { | |
268 | - seq_printf(seq, "\nIcmpMsg:"); | |
269 | - for (j = 0; j < count; ++j) | |
270 | - seq_printf(seq, " %sType%u", out[j] & 0x100 ? "Out" : | |
271 | - "In", out[j] & 0xff); | |
272 | - seq_printf(seq, "\nIcmpMsg:"); | |
273 | - for (j = 0; j < count; ++j) | |
274 | - seq_printf(seq, " %lu", snmp_fold_field((void **) | |
275 | - net->mib.icmpmsg_statistics, out[j])); | |
276 | - } | |
278 | + icmpmsg_put_line(seq, vals, type, count); | |
277 | 279 | |
278 | 280 | #undef PERLINE |
279 | 281 | } |
net/ipv6/ip6mr.c
... | ... | @@ -981,14 +981,15 @@ |
981 | 981 | goto proc_cache_fail; |
982 | 982 | #endif |
983 | 983 | return 0; |
984 | -reg_notif_fail: | |
985 | - kmem_cache_destroy(mrt_cachep); | |
986 | 984 | #ifdef CONFIG_PROC_FS |
987 | -proc_vif_fail: | |
988 | - unregister_netdevice_notifier(&ip6_mr_notifier); | |
989 | 985 | proc_cache_fail: |
990 | 986 | proc_net_remove(&init_net, "ip6_mr_vif"); |
987 | +proc_vif_fail: | |
988 | + unregister_netdevice_notifier(&ip6_mr_notifier); | |
991 | 989 | #endif |
990 | +reg_notif_fail: | |
991 | + del_timer(&ipmr_expire_timer); | |
992 | + kmem_cache_destroy(mrt_cachep); | |
992 | 993 | return err; |
993 | 994 | } |
994 | 995 |
net/key/af_key.c
net/mac80211/debugfs_sta.c
... | ... | @@ -199,7 +199,7 @@ |
199 | 199 | /* toggle Rx aggregation command */ |
200 | 200 | tid_num = tid_num - 100; |
201 | 201 | if (tid_static_rx[tid_num] == 1) { |
202 | - strcpy(state, "off "); | |
202 | + strcpy(state, "off"); | |
203 | 203 | ieee80211_sta_stop_rx_ba_session(sta->sdata, da, tid_num, 0, |
204 | 204 | WLAN_REASON_QSTA_REQUIRE_SETUP); |
205 | 205 | sta->ampdu_mlme.tid_state_rx[tid_num] |= |
net/netfilter/ipvs/ip_vs_xmit.c
... | ... | @@ -713,7 +713,8 @@ |
713 | 713 | iph = ipv6_hdr(skb); |
714 | 714 | iph->version = 6; |
715 | 715 | iph->nexthdr = IPPROTO_IPV6; |
716 | - iph->payload_len = old_iph->payload_len + sizeof(old_iph); | |
716 | + iph->payload_len = old_iph->payload_len; | |
717 | + be16_add_cpu(&iph->payload_len, sizeof(*old_iph)); | |
717 | 718 | iph->priority = old_iph->priority; |
718 | 719 | memset(&iph->flow_lbl, 0, sizeof(iph->flow_lbl)); |
719 | 720 | iph->daddr = rt->rt6i_dst.addr; |