net: annotate inet_timewait_sock bitfields
Vegard Nossum [Sat, 18 Oct 2008 15:37:51 +0000 (17:37 +0200)]
The use of bitfields here would lead to false positive warnings with
kmemcheck. Silence them.

(Additionally, one erroneous comment related to the bitfield was also
fixed.)

Signed-off-by: Vegard Nossum <vegard.nossum@gmail.com>

include/net/inet_timewait_sock.h
net/ipv4/inet_timewait_sock.c

index 4b8ece2..b63b80f 100644 (file)
@@ -16,6 +16,7 @@
 #define _INET_TIMEWAIT_SOCK_
 
 
+#include <linux/kmemcheck.h>
 #include <linux/list.h>
 #include <linux/module.h>
 #include <linux/timer.h>
@@ -127,10 +128,12 @@ struct inet_timewait_sock {
        __be32                  tw_rcv_saddr;
        __be16                  tw_dport;
        __u16                   tw_num;
+       kmemcheck_bitfield_begin(flags);
        /* And these are ours. */
        __u8                    tw_ipv6only:1,
                                tw_transparent:1;
-       /* 15 bits hole, try to pack */
+       /* 14 bits hole, try to pack */
+       kmemcheck_bitfield_end(flags);
        __u16                   tw_ipv6_offset;
        unsigned long           tw_ttd;
        struct inet_bind_bucket *tw_tb;
index 8554d0e..03169fc 100644 (file)
@@ -9,6 +9,7 @@
  */
 
 #include <linux/kernel.h>
+#include <linux/kmemcheck.h>
 #include <net/inet_hashtables.h>
 #include <net/inet_timewait_sock.h>
 #include <net/ip.h>
@@ -117,6 +118,8 @@ struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk, const int stat
        if (tw != NULL) {
                const struct inet_sock *inet = inet_sk(sk);
 
+               kmemcheck_annotate_bitfield(tw, flags);
+
                /* Give us an identity. */
                tw->tw_daddr        = inet->daddr;
                tw->tw_rcv_saddr    = inet->rcv_saddr;