Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751397AbZIOI7V (ORCPT ); Tue, 15 Sep 2009 04:59:21 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751094AbZIOI7O (ORCPT ); Tue, 15 Sep 2009 04:59:14 -0400 Received: from gw1.cosmosbay.com ([212.99.114.194]:34813 "EHLO gw1.cosmosbay.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750905AbZIOI7M (ORCPT ); Tue, 15 Sep 2009 04:59:12 -0400 Message-ID: <4AAF5757.30500@gmail.com> Date: Tue, 15 Sep 2009 10:59:03 +0200 From: Eric Dumazet User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Ingo Molnar CC: Pekka Enberg , Vegard Nossum , linux-kernel@vger.kernel.org, Linux Netdev List , "David S. Miller" Subject: Re: WARNING: kmemcheck: Caught 32-bit read from uninitialized memory (bf438284) References: <20090915080953.GA24958@elte.hu> In-Reply-To: <20090915080953.GA24958@elte.hu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-1.6 (gw1.cosmosbay.com [0.0.0.0]); Tue, 15 Sep 2009 10:59:04 +0200 (CEST) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3902 Lines: 100 Ingo Molnar a ?crit : > FYI, we still have this one on latest mainline: > > [ 2.159614] NET: Registered protocol family 16 > [ 2.163109] initcall netlink_proto_init+0x0/0x1b0 returned 0 after 5859 usecs > [ 2.164008] WARNING: kmemcheck: Caught 32-bit read from uninitialized memory (bf438284) > [ 2.165006] 0100000002000000000000000000000000000000ad4eaddeffffffffffffffff > [ 2.172006] i i i i i i u u i i i i i i i i i i i i i i i i i i i i i i i i > [ 2.179005] ^ > [ 2.180005] > [ 2.181008] Pid: 1, comm: swapper Not tainted (2.6.31-tip-02389-gc9f313c-dirty #151) > [ 2.182006] EIP: 0060:[<815a8101>] EFLAGS: 00010282 CPU: 0 > [ 2.183009] EIP is at sock_init_data+0xe1/0x210 > [ 2.184006] EAX: 0001b000 EBX: bf855938 ECX: 8233b614 EDX: 819ac7bf > [ 2.185006] ESI: bf855800 EDI: bf438280 EBP: bf867f10 ESP: 81b3afcc > [ 2.186006] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 > [ 2.187006] CR0: 8005003b CR2: bf83bdf0 CR3: 01b2c000 CR4: 000006d0 > [ 2.188006] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 > [ 2.189006] DR6: ffff4ff0 DR7: 00000400 > [ 2.190005] [<815d82b5>] __netlink_create+0x35/0xa0 > [ 2.192005] [<815dabaa>] netlink_kernel_create+0x5a/0x150 > [ 2.194004] [<815bc8ee>] rtnetlink_net_init+0x1e/0x40 > [ 2.196005] [<815af381>] register_pernet_operations+0x11/0x30 > [ 2.198004] [<815af4be>] register_pernet_subsys+0x1e/0x30 > [ 2.200004] [<81adb49c>] rtnetlink_init+0x4c/0x100 > [ 2.202004] [<81adbfe5>] netlink_proto_init+0x105/0x1b0 > [ 2.204004] [<81001127>] do_one_initcall+0x27/0x190 > [ 2.206004] [<81a9f567>] do_initcalls+0x27/0x40 > [ 2.208004] [<81a9f5a6>] do_basic_setup+0x26/0x30 > [ 2.210004] [<81a9f907>] kernel_init+0x57/0xa0 > [ 2.212004] [<81004867>] kernel_thread_helper+0x7/0x30 > [ 2.214004] [] 0xffffffff > [ 2.216021] calling bdi_class_init+0x0/0x30 @ 1 > [ 2.217015] device class 'bdi': registering > [ 2.218702] initcall bdi_class_init+0x0/0x30 returned 0 after 976 usecs > [ 2.219041] calling kobject_uevent_init+0x0/0x50 @ 1 > > config attached. > > Ingo > I thought this was already discussed and fixed somehow ? Either we add kmemcheck annotations, or we switch sock->type from short to int to avoid the hole, and possibly to speedup things... [PATCH] net: kmemcheck annotation in struct socket struct socket has a 16 bit hole that triggers kmemcheck warnings. As suggested by Ingo, use kmemcheck annotations Signed-off-by: Eric Dumazet --- include/linux/net.h | 5 +++++ net/socket.c | 1 + 2 files changed, 6 insertions(+) diff --git a/include/linux/net.h b/include/linux/net.h index 4fc2ffd..9040a10 100644 --- a/include/linux/net.h +++ b/include/linux/net.h @@ -57,6 +57,7 @@ typedef enum { #include #include #include /* For O_CLOEXEC and O_NONBLOCK */ +#include struct poll_table_struct; struct pipe_inode_info; @@ -127,7 +128,11 @@ enum sock_shutdown_cmd { */ struct socket { socket_state state; + + kmemcheck_bitfield_begin(type); short type; + kmemcheck_bitfield_end(type); + unsigned long flags; /* * Please keep fasync_list & wait fields in the same cache line diff --git a/net/socket.c b/net/socket.c index 6d47165..2a022c0 100644 --- a/net/socket.c +++ b/net/socket.c @@ -489,6 +489,7 @@ static struct socket *sock_alloc(void) sock = SOCKET_I(inode); + kmemcheck_annotate_bitfield(sock, type); inode->i_mode = S_IFSOCK | S_IRWXUGO; inode->i_uid = current_fsuid(); inode->i_gid = current_fsgid(); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/