[RFC] ah4: use passed-in value of err in ah_output_done

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ah_output_done, as the callback function for the
digest function, receives the exit status in err,
and calls xfrm_output_resume, which also takes a
parameter called err.
Assuming that the digest function exited successfully,
the value of err is 0, and prevents xfrm_output_resume
from calling ah_output, which calls the digest function,
again. However, setting the value of err to ah->nexthdr
gives err a positive protocol value, resulting in
infinite calls of the digest function, preventing the
sending of the packet to the network.

It appears that, except for the first call,
xfrm_output_resume should take err directly from the
value that ah_output_done receives, like esp_output_done,
and unlike ah_input_done, which calls xfrm_input_resume,
which explicitly takes a parameter called nexthdr.
When the change was made, ICMP would work with ah transport
mode.

Signed-off-by: Yuan Kang <Yuan.Kang@xxxxxxxxxxxxx>
---
 net/ipv4/ah4.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c
index c1f4154..33ca186 100644
--- a/net/ipv4/ah4.c
+++ b/net/ipv4/ah4.c
@@ -136,8 +136,6 @@ static void ah_output_done(struct crypto_async_request *base, int err)
 		memcpy(top_iph+1, iph+1, top_iph->ihl*4 - sizeof(struct iphdr));
 	}
 
-	err = ah->nexthdr;
-
 	kfree(AH_SKB_CB(skb)->tmp);
 	xfrm_output_resume(skb, err);
 }
-- 
1.7.4.4

--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux