packet: account statistics only in tpacket_stats_u
authorDaniel Borkmann <dborkman@redhat.com>
Fri, 19 Apr 2013 06:12:29 +0000 (06:12 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 25 Apr 2013 05:29:43 +0000 (01:29 -0400)
commitee80fbf301adac644d0c9465194a7ec87bcd4a07
treeac14fe920736575c7f8c39ed912201c6143fe501
parent0578edc5604e3e192980f406f9e1040aa6434ca4
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 <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/packet/af_packet.c
net/packet/internal.h