[RFC] RPCBIND: add anonymous listening socket in addition to named one

Stanislav Kinsbursky
2011-12-28T15:18:00Z

Hello.
I've experienced a problem with registering Lockd service with rpcbind in
container. My container operates in it's own network namespace context and has
it's own root. But on service register, kernel tries to connect to named unix
socket by using rpciod_workqueue. Thus any connect is done with the same
fs->root, and this leads to that kernel socket, used for registering service
with local portmapper, will always connect to the same user-space socket
regardless to fs->root of process, requested register operation.
Possible solution for this problem, which I would like to discuss, is to add one
more listening socket to rpcbind process. But this one should be anonymous.
Anonymous unix sockets accept connections only within it's network namespace
context, so kernel socket connect will be done always to the user-space socket
in the same network namespace.
Does anyone have any objections to this? Or, probably, better solution for the
problem?