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 branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[IPv6]: Fix ICMPv6 redirect handling with target multicast address
[PKT_SCHED] cls_u32: error code isn't been propogated properly
[ROSE]: Fix rose.ko oops on unload
[TCP]: Fix fastpath_cnt_hint when GSO skb is partially ACKed

+22 -13
+1 -1
include/net/rose.h
··· 188 188 extern void rose_enquiry_response(struct sock *); 189 189 190 190 /* rose_route.c */ 191 - extern struct rose_neigh rose_loopback_neigh; 191 + extern struct rose_neigh *rose_loopback_neigh; 192 192 extern const struct file_operations rose_neigh_fops; 193 193 extern const struct file_operations rose_nodes_fops; 194 194 extern const struct file_operations rose_routes_fops;
+3
net/ipv4/tcp_input.c
··· 2420 2420 __u32 dval = min(tp->fackets_out, packets_acked); 2421 2421 tp->fackets_out -= dval; 2422 2422 } 2423 + /* hint's skb might be NULL but we don't need to care */ 2424 + tp->fastpath_cnt_hint -= min_t(u32, packets_acked, 2425 + tp->fastpath_cnt_hint); 2423 2426 tp->packets_out -= packets_acked; 2424 2427 2425 2428 BUG_ON(tcp_skb_pcount(skb) == 0);
+5 -4
net/ipv6/ndisc.c
··· 1268 1268 1269 1269 if (ipv6_addr_equal(dest, target)) { 1270 1270 on_link = 1; 1271 - } else if (!(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) { 1271 + } else if (ipv6_addr_type(target) != 1272 + (IPV6_ADDR_UNICAST|IPV6_ADDR_LINKLOCAL)) { 1272 1273 ND_PRINTK2(KERN_WARNING 1273 - "ICMPv6 Redirect: target address is not link-local.\n"); 1274 + "ICMPv6 Redirect: target address is not link-local unicast.\n"); 1274 1275 return; 1275 1276 } 1276 1277 ··· 1345 1344 } 1346 1345 1347 1346 if (!ipv6_addr_equal(&ipv6_hdr(skb)->daddr, target) && 1348 - !(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) { 1347 + ipv6_addr_type(target) != (IPV6_ADDR_UNICAST|IPV6_ADDR_LINKLOCAL)) { 1349 1348 ND_PRINTK2(KERN_WARNING 1350 - "ICMPv6 Redirect: target address is not link-local.\n"); 1349 + "ICMPv6 Redirect: target address is not link-local unicast.\n"); 1351 1350 return; 1352 1351 } 1353 1352
+2 -2
net/rose/rose_loopback.c
··· 79 79 80 80 skb_reset_transport_header(skb); 81 81 82 - sk = rose_find_socket(lci_o, &rose_loopback_neigh); 82 + sk = rose_find_socket(lci_o, rose_loopback_neigh); 83 83 if (sk) { 84 84 if (rose_process_rx_frame(sk, skb) == 0) 85 85 kfree_skb(skb); ··· 88 88 89 89 if (frametype == ROSE_CALL_REQUEST) { 90 90 if ((dev = rose_dev_get(dest)) != NULL) { 91 - if (rose_rx_call_request(skb, dev, &rose_loopback_neigh, lci_o) == 0) 91 + if (rose_rx_call_request(skb, dev, rose_loopback_neigh, lci_o) == 0) 92 92 kfree_skb(skb); 93 93 } else { 94 94 kfree_skb(skb);
+10 -5
net/rose/rose_route.c
··· 45 45 static struct rose_route *rose_route_list; 46 46 static DEFINE_SPINLOCK(rose_route_list_lock); 47 47 48 - struct rose_neigh rose_loopback_neigh; 48 + struct rose_neigh *rose_loopback_neigh; 49 49 50 50 /* 51 51 * Add a new route to a node, and in the process add the node and the ··· 362 362 */ 363 363 void rose_add_loopback_neigh(void) 364 364 { 365 - struct rose_neigh *sn = &rose_loopback_neigh; 365 + struct rose_neigh *sn; 366 + 367 + rose_loopback_neigh = kmalloc(sizeof(struct rose_neigh), GFP_KERNEL); 368 + if (!rose_loopback_neigh) 369 + return; 370 + sn = rose_loopback_neigh; 366 371 367 372 sn->callsign = null_ax25_address; 368 373 sn->digipeat = NULL; ··· 422 417 rose_node->mask = 10; 423 418 rose_node->count = 1; 424 419 rose_node->loopback = 1; 425 - rose_node->neighbour[0] = &rose_loopback_neigh; 420 + rose_node->neighbour[0] = rose_loopback_neigh; 426 421 427 422 /* Insert at the head of list. Address is always mask=10 */ 428 423 rose_node->next = rose_node_list; 429 424 rose_node_list = rose_node; 430 425 431 - rose_loopback_neigh.count++; 426 + rose_loopback_neigh->count++; 432 427 433 428 out: 434 429 spin_unlock_bh(&rose_node_list_lock); ··· 459 454 460 455 rose_remove_node(rose_node); 461 456 462 - rose_loopback_neigh.count--; 457 + rose_loopback_neigh->count--; 463 458 464 459 out: 465 460 spin_unlock_bh(&rose_node_list_lock);
+1 -1
net/sched/cls_u32.c
··· 502 502 503 503 #ifdef CONFIG_NET_CLS_IND 504 504 if (tb[TCA_U32_INDEV-1]) { 505 - int err = tcf_change_indev(tp, n->indev, tb[TCA_U32_INDEV-1]); 505 + err = tcf_change_indev(tp, n->indev, tb[TCA_U32_INDEV-1]); 506 506 if (err < 0) 507 507 goto errout; 508 508 }