From: Greg KH on
2.6.33-stable review patch. If anyone has any objections, please let us know.


From: Bjørn Mork <bjorn(a)>

commit ccc2d97cb7c798e785c9f198de243e2b59f7073b upstream.

commit 2783ef23 moved the initialisation of saddr and daddr after
pskb_may_pull() to avoid a potential data corruption. Unfortunately
also placing it after the short packet and bad checksum error paths,
where these variables are used for logging. The result is bogus
output like

[92238.389505] UDP: short packet: From 23715/178 to

Moving the saddr and daddr initialisation above the error paths, while still
keeping it after the pskb_may_pull() to keep the fix from commit 2783ef23.

Signed-off-by: Bjørn Mork <bjorn(a)>
Acked-by: Eric Dumazet <eric.dumazet(a)>
Signed-off-by: David S. Miller <davem(a)>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)>

net/ipv4/udp.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1527,6 +1527,9 @@ int __udp4_lib_rcv(struct sk_buff *skb,

uh = udp_hdr(skb);
ulen = ntohs(uh->len);
+ saddr = ip_hdr(skb)->saddr;
+ daddr = ip_hdr(skb)->daddr;
if (ulen > skb->len)
goto short_packet;

@@ -1540,9 +1543,6 @@ int __udp4_lib_rcv(struct sk_buff *skb,
if (udp4_csum_init(skb, uh, proto))
goto csum_error;

- saddr = ip_hdr(skb)->saddr;
- daddr = ip_hdr(skb)->daddr;
return __udp4_lib_mcast_deliver(net, skb, uh,
saddr, daddr, udptable);

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)
More majordomo info at
Please read the FAQ at