Thread (20 messages) 20 messages, 6 authors, 2019-10-02

Re: [PATCH v2] tomoyo: Don't check open/getattr permission on sockets.

From: Eric Biggers <ebiggers@kernel.org>
Date: 2019-08-22 15:48:09
Also in: linux-fsdevel, lkml

On Thu, Aug 22, 2019 at 04:42:26PM +0900, Tetsuo Handa wrote:
Eric Biggers wrote:
quoted
On Thu, Aug 22, 2019 at 03:55:31PM +0900, Tetsuo Handa wrote:
quoted
quoted
Also, isn't the same bug in other places too?:

	- tomoyo_path_chmod()
	- tomoyo_path_chown()
	- smack_inode_getsecurity()
	- smack_inode_setsecurity()
What's the bug? The file descriptor returned by open(O_PATH) cannot be
passed to read(2), write(2), fchmod(2), fchown(2), fgetxattr(2), mmap(2) etc.
chmod(2), chown(2), getxattr(2), and setxattr(2) take a path, not a fd.
OK. Then, is the correct fix

  inode_lock(inode);
  if (SOCKET_I(inode)->sk) {
    // Can access SOCKET_I(sock)->sk->*
  } else {
    // Already close()d. Don't touch.
  }
  inode_unlock(inode);

thanks to

  commit 6d8c50dcb029872b ("socket: close race condition between sock_close() and sockfs_setattr()")
  commit ff7b11aa481f682e ("net: socket: set sock->sk to NULL after calling proto_ops::release()")

changes?
inode_lock() is already held during security_path_chmod(),
security_path_chown(), and security_inode_setxattr().
So you can't just take it again.

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