Re: [PATCH] NLM: hold BKL when clearing global lockd task and serv vars

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 07, 2008 at 12:45:01PM -0400, Christoph Hellwig wrote:
> On Mon, Apr 07, 2008 at 09:38:34AM -0400, Jeff Layton wrote:
> > The global task and serv pointers for lockd are normally protected by
> > the nlmsvc_mutex. The exception is when the lockd exits abnormally. When
> > this occurs, these variables are cleared without any locking.
> 
> Shouldn't we get rid of the case where it exits abnormally instead?

I tried to figure out when this could actually occur (when can
svc_recv() return an error other than -EINTR or -EAGAIN?), and got lost
in sock_recvmsg():

	- svc_recv() itself returns only -EAGAIN or the return from
	  ->xpo_recvfrom().
	- the only xpo_recvfrom() that's interesting is
	  svc_tcp_recvfrom(), which can return the error it gets from
	  svc_recvfrom(), which can return the error from
	  kernel_recvmsg(), which gets its return from sock_recvmsg().

Since __sock_recvmsg() has a security hook, it looks like we can end up
with an -EACCES from selinux?

So one case would be selinux deciding we weren't allowed to receive
packets from this socket.  Huh.

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux