Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c5027c9a896fbe05367fb893a274deca5114bfd0
Commit:     c5027c9a896fbe05367fb893a274deca5114bfd0
Parent:     4c4d51a7316b164ba08af61aa0c124a88bc60450
Author:     Patrick McHardy <[EMAIL PROTECTED]>
AuthorDate: Thu Apr 5 15:54:02 2007 -0700
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Thu Apr 5 15:54:02 2007 -0700

    [XFRM]: beet: fix IP option encapsulation
    
    Beet mode calculates an incorrect value for the transport header location
    when IP options are present, resulting in encapsulation errors.
    
    The correct location is 4 or 8 bytes before the end of the original IP
    header, depending on whether the pseudo header is padded.
    
    Signed-off-by: Patrick McHardy <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/ipv4/xfrm4_mode_beet.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/net/ipv4/xfrm4_mode_beet.c b/net/ipv4/xfrm4_mode_beet.c
index 89cf59e..16efc66 100644
--- a/net/ipv4/xfrm4_mode_beet.c
+++ b/net/ipv4/xfrm4_mode_beet.c
@@ -42,10 +42,9 @@ static int xfrm4_beet_output(struct xfrm_state *x, struct 
sk_buff *skb)
 
        skb->nh.raw = skb_push(skb, x->props.header_len + hdrlen);
        top_iph = skb->nh.iph;
-       hdrlen = iph->ihl * 4 - optlen;
-       skb->h.raw += hdrlen;
+       skb->h.raw += sizeof(*iph) - hdrlen;
 
-       memmove(top_iph, iph, hdrlen);
+       memmove(top_iph, iph, sizeof(*iph));
        if (unlikely(optlen)) {
                struct ip_beet_phdr *ph;
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to