lkml.org 
[lkml]   [2007]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[-mm patch] remove tcp header from tcp_v4_check
    On Thu, Jan 11, 2007 at 10:26:27PM -0800, Andrew Morton wrote:
    >
    > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20-rc3/2.6.20-rc4-mm1/
    >
    Hi,

    The tcphdr struct passed to tcp_v4_check is not used, the following
    patch removes it from the parameter list.
    (This adds the netfilter modifications missing in the patch I sent
    for rc3-mm1)

    Regards,
    Frederik


    Index: 2.6.20-rc4-mm1/include/net/tcp.h
    ===================================================================
    --- 2.6.20-rc4-mm1.orig/include/net/tcp.h 2007-01-12 11:19:16.000000000 +0100
    +++ 2.6.20-rc4-mm1/include/net/tcp.h 2007-01-12 11:21:43.000000000 +0100
    @@ -802,9 +802,8 @@
    /*
    * Calculate(/check) TCP checksum
    */
    -static inline __sum16 tcp_v4_check(struct tcphdr *th, int len,
    - __be32 saddr, __be32 daddr,
    - __wsum base)
    +static inline __sum16 tcp_v4_check(int len, __be32 saddr,
    + __be32 daddr, __wsum base)
    {
    return csum_tcpudp_magic(saddr,daddr,len,IPPROTO_TCP,base);
    }
    Index: 2.6.20-rc4-mm1/net/ipv4/netfilter/ipt_REJECT.c
    ===================================================================
    --- 2.6.20-rc4-mm1.orig/net/ipv4/netfilter/ipt_REJECT.c 2007-01-12 11:19:16.000000000 +0100
    +++ 2.6.20-rc4-mm1/net/ipv4/netfilter/ipt_REJECT.c 2007-01-12 11:21:43.000000000 +0100
    @@ -116,11 +116,11 @@

    /* Adjust TCP checksum */
    tcph->check = 0;
    - tcph->check = tcp_v4_check(tcph, sizeof(struct tcphdr),
    + tcph->check = tcp_v4_check(sizeof(struct tcphdr),
    nskb->nh.iph->saddr,
    nskb->nh.iph->daddr,
    csum_partial((char *)tcph,
    - sizeof(struct tcphdr), 0));
    + sizeof(struct tcphdr), 0));

    /* Set DF, id = 0 */
    nskb->nh.iph->frag_off = htons(IP_DF);
    Index: 2.6.20-rc4-mm1/net/ipv4/tcp_ipv4.c
    ===================================================================
    --- 2.6.20-rc4-mm1.orig/net/ipv4/tcp_ipv4.c 2007-01-12 11:19:16.000000000 +0100
    +++ 2.6.20-rc4-mm1/net/ipv4/tcp_ipv4.c 2007-01-12 11:21:43.000000000 +0100
    @@ -502,11 +502,11 @@
    struct tcphdr *th = skb->h.th;

    if (skb->ip_summed == CHECKSUM_PARTIAL) {
    - th->check = ~tcp_v4_check(th, len,
    - inet->saddr, inet->daddr, 0);
    + th->check = ~tcp_v4_check(len, inet->saddr,
    + inet->daddr, 0);
    skb->csum_offset = offsetof(struct tcphdr, check);
    } else {
    - th->check = tcp_v4_check(th, len, inet->saddr, inet->daddr,
    + th->check = tcp_v4_check(len, inet->saddr, inet->daddr,
    csum_partial((char *)th,
    th->doff << 2,
    skb->csum));
    @@ -525,7 +525,7 @@
    th = skb->h.th;

    th->check = 0;
    - th->check = ~tcp_v4_check(th, skb->len, iph->saddr, iph->daddr, 0);
    + th->check = ~tcp_v4_check(skb->len, iph->saddr, iph->daddr, 0);
    skb->csum_offset = offsetof(struct tcphdr, check);
    skb->ip_summed = CHECKSUM_PARTIAL;
    return 0;
    @@ -747,7 +747,7 @@
    if (skb) {
    struct tcphdr *th = skb->h.th;

    - th->check = tcp_v4_check(th, skb->len,
    + th->check = tcp_v4_check(skb->len,
    ireq->loc_addr,
    ireq->rmt_addr,
    csum_partial((char *)th, skb->len,
    @@ -1514,7 +1514,7 @@
    static __sum16 tcp_v4_checksum_init(struct sk_buff *skb)
    {
    if (skb->ip_summed == CHECKSUM_COMPLETE) {
    - if (!tcp_v4_check(skb->h.th, skb->len, skb->nh.iph->saddr,
    + if (!tcp_v4_check(skb->len, skb->nh.iph->saddr,
    skb->nh.iph->daddr, skb->csum)) {
    skb->ip_summed = CHECKSUM_UNNECESSARY;
    return 0;
    Index: 2.6.20-rc4-mm1/net/ipv4/netfilter/ip_nat_helper.c
    ===================================================================
    --- 2.6.20-rc4-mm1.orig/net/ipv4/netfilter/ip_nat_helper.c 2007-01-12 11:19:56.000000000 +0100
    +++ 2.6.20-rc4-mm1/net/ipv4/netfilter/ip_nat_helper.c 2007-01-12 11:21:43.000000000 +0100
    @@ -183,7 +183,7 @@
    datalen = (*pskb)->len - iph->ihl*4;
    if ((*pskb)->ip_summed != CHECKSUM_PARTIAL) {
    tcph->check = 0;
    - tcph->check = tcp_v4_check(tcph, datalen,
    + tcph->check = tcp_v4_check(datalen,
    iph->saddr, iph->daddr,
    csum_partial((char *)tcph,
    datalen, 0));
    Index: 2.6.20-rc4-mm1/net/ipv4/netfilter/nf_nat_helper.c
    ===================================================================
    --- 2.6.20-rc4-mm1.orig/net/ipv4/netfilter/nf_nat_helper.c 2007-01-12 11:20:50.000000000 +0100
    +++ 2.6.20-rc4-mm1/net/ipv4/netfilter/nf_nat_helper.c 2007-01-12 11:21:43.000000000 +0100
    @@ -176,7 +176,7 @@
    datalen = (*pskb)->len - iph->ihl*4;
    if ((*pskb)->ip_summed != CHECKSUM_PARTIAL) {
    tcph->check = 0;
    - tcph->check = tcp_v4_check(tcph, datalen,
    + tcph->check = tcp_v4_check(datalen,
    iph->saddr, iph->daddr,
    csum_partial((char *)tcph,
    datalen, 0));
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-01-12 15:21    [W:4.196 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site