From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753343AbbGNSkb (ORCPT ); Tue, 14 Jul 2015 14:40:31 -0400 Received: from mail-pa0-f42.google.com ([209.85.220.42]:32994 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752130AbbGNSka (ORCPT ); Tue, 14 Jul 2015 14:40:30 -0400 Date: Tue, 14 Jul 2015 11:40:40 -0700 From: Stephen Hemminger To: Florian Westphal Cc: Thomas Graf , Cong Wang , "Kirill A. Shutemov" , "David S. Miller" , netdev , "linux-kernel@vger.kernel.org" Subject: Re: mmap()ed AF_NETLINK: lockdep and sleep-in-atomic warnings Message-ID: <20150714114040.58dd5bf5@urahara> In-Reply-To: <20150714095037.GB25674@breakpoint.cc> References: <20150713131825.GA16186@node.dhcp.inet.fi> <20150714093825.GC20597@pox.localdomain> <20150714095037.GB25674@breakpoint.cc> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 14 Jul 2015 11:50:37 +0200 Florian Westphal wrote: > Thomas Graf wrote: > > On 07/13/15 at 10:11pm, Cong Wang wrote: > > > Caused by: > > > > > > commit 21e4902aea80ef35afc00ee8d2abdea4f519b7f7 > > > Author: Thomas Graf > > > Date: Fri Jan 2 23:00:22 2015 +0100 > > > > > > netlink: Lockless lookup with RCU grace period in socket release > > > > > > Defers the release of the socket reference using call_rcu() to > > > allow using an RCU read-side protected call to rhashtable_lookup() > > > > > > This restores behaviour and performance gains as previously > > > introduced by e341694 ("netlink: Convert netlink_lookup() to use > > > RCU protected hash table") without the side effect of severely > > > delayed socket destruction. > > > > > > Signed-off-by: Thomas Graf > > > Signed-off-by: David S. Miller > > > > > > > > > We can't hold mutex lock in a rcu callback, perhaps we could > > > defer the mmap ring cleanup to a workqueue. > > > > The socket should be dead at this point. It might be simpler to > > add a netlink_release_ring() function which doesn't require > > locking at all. It would also get rid of all the special handling > > for closing vs. non-closing. > > Do you know of any users of mmap'd netlink? > Support for this was never added to libmnl; given the fact that netlink > mmap doesn't have any advantages vs. socket interface i'd just revert it > (or mark CONFIG_NETLINK_MMAP broken -- although I don't see > how the unconditional copy on tx could ever be avoided). We use netlink mmap because it gives slightly better performance when processing a route flap.