Thread (9 messages) flat view 9 messages, 7 authors, 2016-06-15

Re: [PATCH net-next] nfnetlink_queue: enable PID info retrieval

From: Tejun Heo <tj@kernel.org>
Date: 2016-06-15 18:47:21
Also in: netfilter-devel

Hello,

On Fri, Jun 10, 2016 at 08:40:34AM +0200, Daniel Wagner wrote:
quoted
[ Cc'ing John, Daniel, et al ]

Btw, while I just looked at scm_detach_fds(), I think commits ...

 * 48a87cc26c13 ("net: netprio: fd passed in SCM_RIGHTS datagram not set
correctly")
 * d84295067fc7 ("net: net_cls: fd passed in SCM_RIGHTS datagram not set
correctly")

... might not be correct, maybe I'm missing something ...? Lets say
process A
has a socket fd that it sends via SCM_RIGHTS to process B. Process A was
the
one that called sk_alloc() originally. Now in scm_detach_fds() we
install a new
fd for process B pointing to the same sock (file's private_data) and
above commits
update the cached socket cgroup data for net_cls/net_prio to the new
process B.
So, if process A for example still sends data over that socket, skbs
will then
wrongly match on B's cgroup membership instead of A's, no?
I can't remember the details right now (need to read up again but I wont
have time till Wednesday).

From your analysis I would say that is not the desired effect. A should
match against its own cgroup and not the one of B.
We don't have a good answer for resources which are shared across
different cgroups.  It is often too expensive to track such sharing
accurately and crude approximation (creator-owned, last-used or
whatever) is used widely even outside cgroup.  Different cgroup
controllers tried different approaches but most are settling down for
creator ownership with exceptions for high impact cases.

I don't think there's a solution which satifies all cases here.  Given
that, doing the minimum amount of work (not worrying about SCM_RIGHTS
transfers) is the right thing to do, but we've had this re-labeling
since 2012, so leaving as-is is likely the best option at this point.

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help