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

+52 -25
+3 -4
net/ipv4/af_inet.c
··· 228 228 unsigned char answer_flags; 229 229 char answer_no_check; 230 230 int try_loading_module = 0; 231 - int err = -ESOCKTNOSUPPORT; 231 + int err; 232 232 233 233 sock->state = SS_UNCONNECTED; 234 234 235 235 /* Look for the requested type/protocol pair. */ 236 236 answer = NULL; 237 237 lookup_protocol: 238 + err = -ESOCKTNOSUPPORT; 238 239 rcu_read_lock(); 239 240 list_for_each_rcu(p, &inetsw[sock->type]) { 240 241 answer = list_entry(p, struct inet_protosw, list); ··· 253 252 if (IPPROTO_IP == answer->protocol) 254 253 break; 255 254 } 255 + err = -EPROTONOSUPPORT; 256 256 answer = NULL; 257 257 } 258 258 ··· 281 279 282 280 err = -EPERM; 283 281 if (answer->capability > 0 && !capable(answer->capability)) 284 - goto out_rcu_unlock; 285 - err = -EPROTONOSUPPORT; 286 - if (!protocol) 287 282 goto out_rcu_unlock; 288 283 289 284 sock->ops = answer->ops;
+4 -1
net/ipv4/igmp.c
··· 897 897 /* Is it our report looped back? */ 898 898 if (((struct rtable*)skb->dst)->fl.iif == 0) 899 899 break; 900 - igmp_heard_report(in_dev, ih->group); 900 + /* don't rely on MC router hearing unicast reports */ 901 + if (skb->pkt_type == PACKET_MULTICAST || 902 + skb->pkt_type == PACKET_BROADCAST) 903 + igmp_heard_report(in_dev, ih->group); 901 904 break; 902 905 case IGMP_PIM: 903 906 #ifdef CONFIG_IP_PIMSM_V1
+33 -14
net/ipv6/af_inet6.c
··· 92 92 struct proto *answer_prot; 93 93 unsigned char answer_flags; 94 94 char answer_no_check; 95 - int rc; 95 + int try_loading_module = 0; 96 + int err; 96 97 97 98 /* Look for the requested type/protocol pair. */ 98 99 answer = NULL; 100 + lookup_protocol: 101 + err = -ESOCKTNOSUPPORT; 99 102 rcu_read_lock(); 100 103 list_for_each_rcu(p, &inetsw6[sock->type]) { 101 104 answer = list_entry(p, struct inet_protosw, list); ··· 116 113 if (IPPROTO_IP == answer->protocol) 117 114 break; 118 115 } 116 + err = -EPROTONOSUPPORT; 119 117 answer = NULL; 120 118 } 121 119 122 - rc = -ESOCKTNOSUPPORT; 123 - if (!answer) 124 - goto out_rcu_unlock; 125 - rc = -EPERM; 120 + if (!answer) { 121 + if (try_loading_module < 2) { 122 + rcu_read_unlock(); 123 + /* 124 + * Be more specific, e.g. net-pf-10-proto-132-type-1 125 + * (net-pf-PF_INET6-proto-IPPROTO_SCTP-type-SOCK_STREAM) 126 + */ 127 + if (++try_loading_module == 1) 128 + request_module("net-pf-%d-proto-%d-type-%d", 129 + PF_INET6, protocol, sock->type); 130 + /* 131 + * Fall back to generic, e.g. net-pf-10-proto-132 132 + * (net-pf-PF_INET6-proto-IPPROTO_SCTP) 133 + */ 134 + else 135 + request_module("net-pf-%d-proto-%d", 136 + PF_INET6, protocol); 137 + goto lookup_protocol; 138 + } else 139 + goto out_rcu_unlock; 140 + } 141 + 142 + err = -EPERM; 126 143 if (answer->capability > 0 && !capable(answer->capability)) 127 - goto out_rcu_unlock; 128 - rc = -EPROTONOSUPPORT; 129 - if (!protocol) 130 144 goto out_rcu_unlock; 131 145 132 146 sock->ops = answer->ops; 133 - 134 147 answer_prot = answer->prot; 135 148 answer_no_check = answer->no_check; 136 149 answer_flags = answer->flags; ··· 154 135 155 136 BUG_TRAP(answer_prot->slab != NULL); 156 137 157 - rc = -ENOBUFS; 138 + err = -ENOBUFS; 158 139 sk = sk_alloc(PF_INET6, GFP_KERNEL, answer_prot, 1); 159 140 if (sk == NULL) 160 141 goto out; 161 142 162 143 sock_init_data(sock, sk); 163 144 164 - rc = 0; 145 + err = 0; 165 146 sk->sk_no_check = answer_no_check; 166 147 if (INET_PROTOSW_REUSE & answer_flags) 167 148 sk->sk_reuse = 1; ··· 221 202 sk->sk_prot->hash(sk); 222 203 } 223 204 if (sk->sk_prot->init) { 224 - rc = sk->sk_prot->init(sk); 225 - if (rc) { 205 + err = sk->sk_prot->init(sk); 206 + if (err) { 226 207 sk_common_release(sk); 227 208 goto out; 228 209 } 229 210 } 230 211 out: 231 - return rc; 212 + return err; 232 213 out_rcu_unlock: 233 214 rcu_read_unlock(); 234 215 goto out;
+5
net/ipv6/mcast.c
··· 1231 1231 if (skb->pkt_type == PACKET_LOOPBACK) 1232 1232 return 0; 1233 1233 1234 + /* send our report if the MC router may not have heard this report */ 1235 + if (skb->pkt_type != PACKET_MULTICAST && 1236 + skb->pkt_type != PACKET_BROADCAST) 1237 + return 0; 1238 + 1234 1239 if (!pskb_may_pull(skb, sizeof(struct in6_addr))) 1235 1240 return -EINVAL; 1236 1241
+5 -5
net/sctp/socket.c
··· 4743 4743 struct sk_buff *skb; 4744 4744 long timeo; 4745 4745 4746 - /* Caller is allowed not to check sk->sk_err before calling. */ 4747 - error = sock_error(sk); 4748 - if (error) 4749 - goto no_packet; 4750 - 4751 4746 timeo = sock_rcvtimeo(sk, noblock); 4752 4747 4753 4748 SCTP_DEBUG_PRINTK("Timeout: timeo: %ld, MAX: %ld.\n", ··· 4768 4773 4769 4774 if (skb) 4770 4775 return skb; 4776 + 4777 + /* Caller is allowed not to check sk->sk_err before calling. */ 4778 + error = sock_error(sk); 4779 + if (error) 4780 + goto no_packet; 4771 4781 4772 4782 if (sk->sk_shutdown & RCV_SHUTDOWN) 4773 4783 break;
+2 -1
net/sctp/transport.c
··· 261 261 * association's active path for getsockname(). 262 262 */ 263 263 if (asoc && (transport == asoc->peer.active_path)) 264 - af->to_sk_saddr(&transport->saddr, asoc->base.sk); 264 + opt->pf->af->to_sk_saddr(&transport->saddr, 265 + asoc->base.sk); 265 266 } else 266 267 transport->pmtu = SCTP_DEFAULT_MAXSEGMENT; 267 268 }