Browse Source

net: annotate bitfields in struct inet_sock

Signed-off-by: Vegard Nossum <vegard.nossum@gmail.com>
Vegard Nossum 16 years ago
parent
commit
45e3ff8270
1 changed files with 10 additions and 4 deletions
  1. 10 4
      include/net/inet_sock.h

+ 10 - 4
include/net/inet_sock.h

@@ -17,6 +17,7 @@
 #define _INET_SOCK_H
 #define _INET_SOCK_H
 
 
 
 
+#include <linux/kmemcheck.h>
 #include <linux/string.h>
 #include <linux/string.h>
 #include <linux/types.h>
 #include <linux/types.h>
 #include <linux/jhash.h>
 #include <linux/jhash.h>
@@ -66,14 +67,16 @@ struct inet_request_sock {
 	__be32			loc_addr;
 	__be32			loc_addr;
 	__be32			rmt_addr;
 	__be32			rmt_addr;
 	__be16			rmt_port;
 	__be16			rmt_port;
-	u16			snd_wscale : 4, 
-				rcv_wscale : 4, 
+	kmemcheck_bitfield_begin(flags);
+	u16			snd_wscale : 4,
+				rcv_wscale : 4,
 				tstamp_ok  : 1,
 				tstamp_ok  : 1,
 				sack_ok	   : 1,
 				sack_ok	   : 1,
 				wscale_ok  : 1,
 				wscale_ok  : 1,
 				ecn_ok	   : 1,
 				ecn_ok	   : 1,
 				acked	   : 1,
 				acked	   : 1,
 				no_srccheck: 1;
 				no_srccheck: 1;
+	kmemcheck_bitfield_end(flags);
 	struct ip_options	*opt;
 	struct ip_options	*opt;
 };
 };
 
 
@@ -198,9 +201,12 @@ static inline int inet_sk_ehashfn(const struct sock *sk)
 static inline struct request_sock *inet_reqsk_alloc(struct request_sock_ops *ops)
 static inline struct request_sock *inet_reqsk_alloc(struct request_sock_ops *ops)
 {
 {
 	struct request_sock *req = reqsk_alloc(ops);
 	struct request_sock *req = reqsk_alloc(ops);
+	struct inet_request_sock *ireq = inet_rsk(req);
 
 
-	if (req != NULL)
-		inet_rsk(req)->opt = NULL;
+	if (req != NULL) {
+		kmemcheck_annotate_bitfield(ireq, flags);
+		ireq->opt = NULL;
+	}
 
 
 	return req;
 	return req;
 }
 }