diff options
| author | Tony Luck <tony.luck@intel.com> | 2005-05-17 15:53:14 -0700 | 
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2005-05-17 15:53:14 -0700 | 
| commit | 325a479c4c110db278ef3361460a48c4093252cc (patch) | |
| tree | bcfbf4d0647d9442045639a5c19da59d55190e81 /net/ipv6/raw.c | |
| parent | ebcc80c1b6629a445f7471cc1ddb48faf8a84e70 (diff) | |
| parent | 7f9eaedf894dbaa08c157832e9a6c9c03ffed1ed (diff) | |
Merge with temp tree to get David's gdb inferior calls patch
Diffstat (limited to 'net/ipv6/raw.c')
| -rw-r--r-- | net/ipv6/raw.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 1352c1d9bf4d..617645bc5ed6 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -455,11 +455,11 @@ csum_copy_err:  static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,  				     struct raw6_sock *rp)  { -	struct inet_sock *inet = inet_sk(sk);  	struct sk_buff *skb;  	int err = 0;  	int offset;  	int len; +	int total_len;  	u32 tmp_csum;  	u16 csum; @@ -470,7 +470,8 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,  		goto out;  	offset = rp->offset; -	if (offset >= inet->cork.length - 1) { +	total_len = inet_sk(sk)->cork.length - (skb->nh.raw - skb->data); +	if (offset >= total_len - 1) {  		err = -EINVAL;  		ip6_flush_pending_frames(sk);  		goto out; @@ -514,7 +515,7 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,  	tmp_csum = csum_ipv6_magic(&fl->fl6_src,  				   &fl->fl6_dst, -				   inet->cork.length, fl->proto, tmp_csum); +				   total_len, fl->proto, tmp_csum);  	if (tmp_csum == 0)  		tmp_csum = -1; | 
