diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-04 11:47:58 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-04 11:47:58 -0700 | 
| commit | 6ba74014c1ab0e37af7de6f64b4eccbbae3cb9e7 (patch) | |
| tree | 8f3892fc44f1e403675a6d7e88fda5c70e56ee4c /net/ipv4/raw.c | |
| parent | 5abd9ccced7a726c817dd6b5b96bc933859138d1 (diff) | |
| parent | 3ff1c25927e3af61c6bf0e4ed959504058ae4565 (diff) | |
| download | olio-linux-3.10-6ba74014c1ab0e37af7de6f64b4eccbbae3cb9e7.tar.xz olio-linux-3.10-6ba74014c1ab0e37af7de6f64b4eccbbae3cb9e7.zip  | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1443 commits)
  phy/marvell: add 88ec048 support
  igb: Program MDICNFG register prior to PHY init
  e1000e: correct MAC-PHY interconnect register offset for 82579
  hso: Add new product ID
  can: Add driver for esd CAN-USB/2 device
  l2tp: fix export of header file for userspace
  can-raw: Fix skb_orphan_try handling
  Revert "net: remove zap_completion_queue"
  net: cleanup inclusion
  phy/marvell: add 88e1121 interface mode support
  u32: negative offset fix
  net: Fix a typo from "dev" to "ndev"
  igb: Use irq_synchronize per vector when using MSI-X
  ixgbevf: fix null pointer dereference due to filter being set for VLAN 0
  e1000e: Fix irq_synchronize in MSI-X case
  e1000e: register pm_qos request on hardware activation
  ip_fragment: fix subtracting PPPOE_SES_HLEN from mtu twice
  net: Add getsockopt support for TCP thin-streams
  cxgb4: update driver version
  cxgb4: add new PCI IDs
  ...
Manually fix up conflicts in:
 - drivers/net/e1000e/netdev.c: due to pm_qos registration
   infrastructure changes
 - drivers/net/phy/marvell.c: conflict between adding 88ec048 support
   and cleaning up the IDs
 - drivers/net/wireless/ipw2x00/ipw2100.c: trivial ipw2100_pm_qos_req
   conflict (registration change vs marking it static)
Diffstat (limited to 'net/ipv4/raw.c')
| -rw-r--r-- | net/ipv4/raw.c | 22 | 
1 files changed, 12 insertions, 10 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 2c7a1639388..009a7b2aa1e 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -314,7 +314,7 @@ int raw_rcv(struct sock *sk, struct sk_buff *skb)  }  static int raw_send_hdrinc(struct sock *sk, void *from, size_t length, -			struct rtable *rt, +			struct rtable **rtp,  			unsigned int flags)  {  	struct inet_sock *inet = inet_sk(sk); @@ -323,25 +323,27 @@ static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,  	struct sk_buff *skb;  	unsigned int iphlen;  	int err; +	struct rtable *rt = *rtp; -	if (length > rt->u.dst.dev->mtu) { +	if (length > rt->dst.dev->mtu) {  		ip_local_error(sk, EMSGSIZE, rt->rt_dst, inet->inet_dport, -			       rt->u.dst.dev->mtu); +			       rt->dst.dev->mtu);  		return -EMSGSIZE;  	}  	if (flags&MSG_PROBE)  		goto out;  	skb = sock_alloc_send_skb(sk, -				  length + LL_ALLOCATED_SPACE(rt->u.dst.dev) + 15, +				  length + LL_ALLOCATED_SPACE(rt->dst.dev) + 15,  				  flags & MSG_DONTWAIT, &err);  	if (skb == NULL)  		goto error; -	skb_reserve(skb, LL_RESERVED_SPACE(rt->u.dst.dev)); +	skb_reserve(skb, LL_RESERVED_SPACE(rt->dst.dev));  	skb->priority = sk->sk_priority;  	skb->mark = sk->sk_mark; -	skb_dst_set(skb, dst_clone(&rt->u.dst)); +	skb_dst_set(skb, &rt->dst); +	*rtp = NULL;  	skb_reset_network_header(skb);  	iph = ip_hdr(skb); @@ -373,7 +375,7 @@ static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,  		iph->check   = 0;  		iph->tot_len = htons(length);  		if (!iph->id) -			ip_select_ident(iph, &rt->u.dst, NULL); +			ip_select_ident(iph, &rt->dst, NULL);  		iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);  	} @@ -382,7 +384,7 @@ static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,  			skb_transport_header(skb))->type);  	err = NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_OUT, skb, NULL, -		      rt->u.dst.dev, dst_output); +		      rt->dst.dev, dst_output);  	if (err > 0)  		err = net_xmit_errno(err);  	if (err) @@ -576,7 +578,7 @@ back_from_confirm:  	if (inet->hdrincl)  		err = raw_send_hdrinc(sk, msg->msg_iov, len, -					rt, msg->msg_flags); +					&rt, msg->msg_flags);  	 else {  		if (!ipc.addr) @@ -604,7 +606,7 @@ out:  	return len;  do_confirm: -	dst_confirm(&rt->u.dst); +	dst_confirm(&rt->dst);  	if (!(msg->msg_flags & MSG_PROBE) || len)  		goto back_from_confirm;  	err = 0;  |