Re: [PATCH -next v2] unix stream: Fix use-after-free crashes
flat view
From: Tim Chen <hidden>
Date: 2011-09-08 23:32:50
On Thu, 2011-09-08 at 12:05 +0200, Sedat Dilek wrote:
On Tue, Sep 6, 2011 at 9:59 PM, Tim Chen [off-list ref] wrote:quoted
On Tue, 2011-09-06 at 21:43 +0200, Eric Dumazet wrote:quoted
Le mardi 06 septembre 2011 à 12:33 -0700, Tim Chen a écrit :quoted
Yes, I think locking the sendmsg for the entire duration of unix_stream_sendmsg makes a lot of sense. It simplifies the logic a lot more. I'll try to cook something up in the next couple of days.Thats not really possible, we cant hold a spinlock and call sock_alloc_send_skb() and/or memcpy_fromiovec(), wich might sleep. You would need to prepare the full skb list, then : - stick the ref on the last skb of the list. Transfert the whole skb list in other->sk_receive_queue in one go, instead of one after another. Unfortunately, this would break streaming (big send(), and another thread doing the receive) Listen, I am wondering why hackbench even triggers SCM code. This is really odd. We should not have a _single_ pid/cred ref/unref at all.Hackbench triggers the code because it has a bunch of threads sending msgs on UNIX socket.quoted
# lsof | grep socket | wc -l 198 Aprrox 200 sockets in usage here, can you post your hackbench line, please? I would compare hackbench results with and without new improvements in SCM code. - Sedat -
The hackbench line I used was ./hackbench 50 thread 2000 You will need to use the threaded case for testing to see the issue. I was running on a 4 socket, 40 cores total Westmere-EX machine. The improvement may depend on your machine size, probably with more improvement on larger multi-socket machine as smaller ones don't have as big a problem. Tim