Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

David writes:
"Networking:

A few straggler bug fixes:

1) Fix indexing of multi-pass dumps of ipv6 addresses, from David
Ahern.

2) Revert RCU locking change for bonding netpoll, causes worse
problems than it solves.

3) pskb_trim_rcsum_slow() doesn't handle odd trim offsets, resulting
in erroneous bad hw checksum triggers with CHECKSUM_COMPLETE
devices. From Dimitris Michailidis.

4) a revert to some neighbour code changes that adjust notifications
in a way that confuses some apps."

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
Revert "neighbour: force neigh_invalidate when NUD_FAILED update is from admin"
net/ipv6: Fix index counter for unicast addresses in in6_dump_addrs
net: fix pskb_trim_rcsum_slow() with odd trim offset
Revert "bond: take rcu lock in netpoll_send_skb_on_dev"

+8 -8
+1 -2
net/core/neighbour.c
··· 1148 1148 neigh->nud_state = new; 1149 1149 err = 0; 1150 1150 notify = old & NUD_VALID; 1151 - if (((old & (NUD_INCOMPLETE | NUD_PROBE)) || 1152 - (flags & NEIGH_UPDATE_F_ADMIN)) && 1151 + if ((old & (NUD_INCOMPLETE | NUD_PROBE)) && 1153 1152 (new & NUD_FAILED)) { 1154 1153 neigh_invalidate(neigh); 1155 1154 notify = 1;
-2
net/core/netpoll.c
··· 312 312 /* It is up to the caller to keep npinfo alive. */ 313 313 struct netpoll_info *npinfo; 314 314 315 - rcu_read_lock_bh(); 316 315 lockdep_assert_irqs_disabled(); 317 316 318 317 npinfo = rcu_dereference_bh(np->dev->npinfo); ··· 356 357 skb_queue_tail(&npinfo->txq, skb); 357 358 schedule_delayed_work(&npinfo->tx_work,0); 358 359 } 359 - rcu_read_unlock_bh(); 360 360 } 361 361 EXPORT_SYMBOL(netpoll_send_skb_on_dev); 362 362
+3 -2
net/core/skbuff.c
··· 1846 1846 if (skb->ip_summed == CHECKSUM_COMPLETE) { 1847 1847 int delta = skb->len - len; 1848 1848 1849 - skb->csum = csum_sub(skb->csum, 1850 - skb_checksum(skb, len, delta, 0)); 1849 + skb->csum = csum_block_sub(skb->csum, 1850 + skb_checksum(skb, len, delta, 0), 1851 + len); 1851 1852 } 1852 1853 return __pskb_trim(skb, len); 1853 1854 }
+4 -2
net/ipv6/addrconf.c
··· 4928 4928 4929 4929 /* unicast address incl. temp addr */ 4930 4930 list_for_each_entry(ifa, &idev->addr_list, if_list) { 4931 - if (++ip_idx < s_ip_idx) 4932 - continue; 4931 + if (ip_idx < s_ip_idx) 4932 + goto next; 4933 4933 err = inet6_fill_ifaddr(skb, ifa, 4934 4934 NETLINK_CB(cb->skb).portid, 4935 4935 cb->nlh->nlmsg_seq, ··· 4938 4938 if (err < 0) 4939 4939 break; 4940 4940 nl_dump_check_consistent(cb, nlmsg_hdr(skb)); 4941 + next: 4942 + ip_idx++; 4941 4943 } 4942 4944 break; 4943 4945 }