lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20140825233346.GF30140@casper.infradead.org> Date: Tue, 26 Aug 2014 00:33:46 +0100 From: Thomas Graf <tgraf@...g.ch> To: David Miller <davem@...emloft.net> Cc: eric.dumazet@...il.com, netdev@...r.kernel.org, paulmck@...ux.vnet.ibm.com Subject: Re: using rhashtable in inethash On 08/25/14 at 04:12pm, David Miller wrote: > During the Networking Workshop I mentioned converting the inet hash > tables over to rhashtable so that we don't allocate this insanely > large hash table at boot time which goes largely unused. > I took a quick look at this last night and the only thing we really > need is the addition of a set of rhashtable interfaces which use > NULLs lists, as the inet hashtables currently require. Eric brought this up as well last week. I see no problem using a non-NULL token as the default to identify the end of the list. We had a quick sitdown with Paul E. McKenney and came up with some ideas that should allow doing that even with resizes taking place by using the hash of the entry as the token. We also discussed the possibility to do the resizing outside of the insert/remove context and move it to a worker thread using per bucket locks. We think that we may have found something that might work and I will give that a shot. It will allow to use a resizing rhashtable with the insert/remove being in atomic context which I believe is needed for the inet cache. > Also, I noticed in the netlink changes this really expensive > synchronize_net() added to netlink_release(), is that _really_ > necessary? > > > That's really expensive and my impression was that such a sync is only > needed during hash table resizing, not when getting rid of objects > that we in an rhashtable. The reason I added added the sync is because I could not see how else to prevent the sock_put() in netlink_release() to release socket memoray, specifically the embedded rhash_head, that is possibly being accessed in a RCU protected reader traversing the bucket. Such a reader would not hold a reference to the socket. I may be missing something though and I'm happy to change this for something better. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists