[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] e1000: Fix TCP checksum overflow with TSO
From: |
Alex Williamson |
Subject: |
[Qemu-devel] [PATCH] e1000: Fix TCP checksum overflow with TSO |
Date: |
Fri, 05 Nov 2010 14:52:08 -0600 |
User-agent: |
StGIT/0.14.3 |
When adding the length to the pseudo header, we're not properly
accounting for overflow.
From: Mark Wu <address@hidden>
Signed-off-by: Alex Williamson <address@hidden>
---
hw/e1000.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/hw/e1000.c b/hw/e1000.c
index 532efdc..677165f 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -384,9 +384,12 @@ xmit_seg(E1000State *s)
} else // UDP
cpu_to_be16wu((uint16_t *)(tp->data+css+4), len);
if (tp->sum_needed & E1000_TXD_POPTS_TXSM) {
+ unsigned int phsum;
// add pseudo-header length before checksum calculation
sp = (uint16_t *)(tp->data + tp->tucso);
- cpu_to_be16wu(sp, be16_to_cpup(sp) + len);
+ phsum = be16_to_cpup(sp) + len;
+ phsum = (phsum >> 16) + (phsum & 0xffff);
+ cpu_to_be16wu(sp, phsum);
}
tp->tso_frames++;
}
- [Qemu-devel] [PATCH] e1000: Fix TCP checksum overflow with TSO,
Alex Williamson <=