From ee80fbf301adac644d0c9465194a7ec87bcd4a07 Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Fri, 19 Apr 2013 06:12:29 +0000 Subject: packet: account statistics only in tpacket_stats_u Currently, packet_sock has a struct tpacket_stats stats member for TPACKET_V1 and TPACKET_V2 statistic accounting, and with TPACKET_V3 ``union tpacket_stats_u stats_u'' was introduced, where however only statistics for TPACKET_V3 are held, and when copied to user space, TPACKET_V3 does some hackery and access also tpacket_stats' stats, although everything could have been done within the union itself. Unify accounting within the tpacket_stats_u union so that we can remove 8 bytes from packet_sock that are there unnecessary. Note that even if we switch to TPACKET_V3 and would use non mmap(2)ed option, this still works due to the union with same types + offsets, that are exposed to the user space. Signed-off-by: Daniel Borkmann Signed-off-by: David S. Miller --- net/packet/internal.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'net/packet/internal.h') diff --git a/net/packet/internal.h b/net/packet/internal.h index 650751b9a7ee..c4e4b4561207 100644 --- a/net/packet/internal.h +++ b/net/packet/internal.h @@ -93,8 +93,7 @@ struct packet_sock { /* struct sock has to be the first member of packet_sock */ struct sock sk; struct packet_fanout *fanout; - struct tpacket_stats stats; - union tpacket_stats_u stats_u; + union tpacket_stats_u stats; struct packet_ring_buffer rx_ring; struct packet_ring_buffer tx_ring; int copy_thresh; -- cgit