#
56ef7bdc |
| 18-May-2020 |
Andre Przywara <andre.przywara@arm.com> |
net: uip: Fix GCC 10 warning about checksum calculation
GCC 10.1 generates a warning in net/ip/csum.c about exceeding a buffer limit in a memcpy operation: ------------------ In function 'memcpy',
net: uip: Fix GCC 10 warning about checksum calculation
GCC 10.1 generates a warning in net/ip/csum.c about exceeding a buffer limit in a memcpy operation: ------------------ In function 'memcpy', inlined from 'uip_csum_udp' at net/uip/csum.c:58:3: /usr/include/aarch64-linux-gnu/bits/string_fortified.h:34:10: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 34 | return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from net/uip/csum.c:1: net/uip/csum.c: In function 'uip_csum_udp': include/kvm/uip.h:132:6: note: at offset 0 to object 'sport' with size 2 declared here 132 | u16 sport; ------------------
This warning originates from the code taking the address of the "sport" member, then using that with some pointer arithmetic in a memcpy call. GCC now sees that the object is only a u16, so copying 12 bytes into it cannot be any good. It's somewhat debatable whether this is a legitimate warning, as there is enough storage at that place, and we knowingly use the struct and its variabled-sized member at the end.
However we can also rewrite the code, to not abuse the "&" operation of some *member*, but take the address of the struct itself. This makes the code less dodgy, and indeed appeases GCC 10.
Reported-by: Alexandru Elisei <alexandru.elisei@arm.com> Signed-off-by: Andre Przywara <andre.przywara@arm.com> Tested-by: Alexandru Elisei <alexandru.elisei@arm.com> Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com> Link: https://lore.kernel.org/r/20200518125649.216416-1-andre.przywara@arm.com Signed-off-by: Will Deacon <will@kernel.org>
show more ...
|
#
42a6c572 |
| 09-Jul-2011 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Move uip to net directory
This mirrors what the kernel already has.
Suggested-by: Pekka Enberg <penberg@kernel.org> Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka E
kvm tools: Move uip to net directory
This mirrors what the kernel already has.
Suggested-by: Pekka Enberg <penberg@kernel.org> Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
89fb0bf8 |
| 29-Jun-2011 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Implement uip_csum_tcp() to calculate TCP checksum
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
|
#
07197967 |
| 29-Jun-2011 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Implement uip_csum_udp() to calculate UDP checksum
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
|
#
0134a2a7 |
| 29-Jun-2011 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Add ICMP support for uip
- Introduce struct uip_icmp to present ICMP package
- Implement uip_csum_icmp() to calculate ICMP checksum
- Current ICMP implementation in uip does not really
kvm tools: Add ICMP support for uip
- Introduce struct uip_icmp to present ICMP package
- Implement uip_csum_icmp() to calculate ICMP checksum
- Current ICMP implementation in uip does not really send ICMP package to remote host in question, instead it just fake a ICMP reply to fool guest.
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
d8db9f85 |
| 29-Jun-2011 |
Asias He <asias.hejun@gmail.com> |
kvm tools: Implement IP checksum for uip
Other protocal, e.g. TCP, UDP, ICMP, can use uip_csum() to make checsksum as well.
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enbe
kvm tools: Implement IP checksum for uip
Other protocal, e.g. TCP, UDP, ICMP, can use uip_csum() to make checsksum as well.
Signed-off-by: Asias He <asias.hejun@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|