From patchwork Mon Nov 24 12:54:57 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Beregalov X-Patchwork-Id: 10395 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 16E97DDDFF for ; Mon, 24 Nov 2008 23:55:12 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752353AbYKXMzI (ORCPT ); Mon, 24 Nov 2008 07:55:08 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752206AbYKXMzH (ORCPT ); Mon, 24 Nov 2008 07:55:07 -0500 Received: from nf-out-0910.google.com ([64.233.182.191]:40793 "EHLO nf-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751334AbYKXMzE (ORCPT ); Mon, 24 Nov 2008 07:55:04 -0500 Received: by nf-out-0910.google.com with SMTP id d3so1033811nfc.21 for ; Mon, 24 Nov 2008 04:55:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:date:from:to:subject :message-id:mime-version:content-type:content-disposition:user-agent; bh=DJawrDBh1V8wVXcpdM7jOf58ybf4OZfwR4rMi43Zzqw=; b=TCYTU/yJkHIVTGBGt/d1FmENzXbq9hb8ryYt+hbjQvQj2xWStfKp/zbCbV3+9QLCxU JqrbtbkSkoo7TihTz1SicWu0xI4mYA+eGLYmGs2Rz0HfS72W01b1TCXIiEOqg9m48OA5 6B0HbjXbEkVoUw0kkLN66m53uPHysS1Jr2L+k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:subject:message-id:mime-version:content-type :content-disposition:user-agent; b=pIkrqDM3MqW3VNCd2lVaagOIaAYq5Nr+QRWFt+P0BG1Johhtn0wOTDdRalFUT+ghNC NQE5BfZ99Y5HD76O0wE1Abg/hnbz8qWFvLUjyxr3DUiNpVDtgV6vSuCNW6Orpdd+eS03 MNvEa4/mak/KsqKoyoPMzHEBQhgd/SukRfZjg= Received: by 10.86.52.6 with SMTP id z6mr2146026fgz.63.1227531302286; Mon, 24 Nov 2008 04:55:02 -0800 (PST) Received: from @ (ppp91-76-46-240.pppoe.mtu-net.ru [91.76.46.240]) by mx.google.com with ESMTPS id 4sm6318987fgg.4.2008.11.24.04.55.00 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 24 Nov 2008 04:55:01 -0800 (PST) Date: Mon, 24 Nov 2008 15:54:57 +0300 From: Alexander Beregalov To: netdev@vger.kernel.org, dada1@cosmosbay.com, davem@davemloft.net Subject: [PATCH] net: af_unix should disable preempt around sock_prot_inuse_add() Message-ID: <20081124125457.GA6255@orion> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.16 (2007-06-09) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org BUG: using smp_processor_id() in preemptible [00000000] code: ini caller is sock_prot_inuse_add+0x24/0x42 Pid: 738, comm: init-early.sh Tainted: G W 2.6.28-rc6-nex Call Trace: [] debug_smp_processor_id+0xca/0xe0 [] sock_prot_inuse_add+0x24/0x42 [] unix_create1+0x161/0x176 [] unix_stream_connect+0x94/0x3b0 [] sys_connect+0x68/0x8e [] system_call_fastpath+0x16/0x1b Signed-off-by: Alexander Beregalov Signed-off-by: David S. Miller Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller --- net/unix/af_unix.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index a9b3c90..f7a1d46 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -361,7 +361,9 @@ static void unix_sock_destructor(struct sock *sk) unix_release_addr(u->addr); atomic_dec(&unix_nr_socks); + preempt_disable(); sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1); + preempt_enable(); #ifdef UNIX_REFCNT_DEBUG printk(KERN_DEBUG "UNIX %p is destroyed, %d are still alive.\n", sk, atomic_read(&unix_nr_socks)); @@ -612,9 +614,11 @@ static struct sock *unix_create1(struct net *net, struct socket *sock) out: if (sk == NULL) atomic_dec(&unix_nr_socks); - else + else { + preempt_disable(); sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1); - + preempt_enable(); + } return sk; }