All of lore.kernel.org
 help / color / mirror / Atom feed
* fanotify permission events on virtual filesystem
@ 2019-03-20 13:16 Jan Kara
  2019-03-20 13:46 ` Amir Goldstein
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Kara @ 2019-03-20 13:16 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Amir Goldstein, mhocko, Al Viro

Hello,

recently, one of our customers has reported a deadlock with fanotify. The
analysis has shown that a process has put (likely by mistake) FAN_OPEN_PERM
mark on /proc and / filesystem. That resulted in a deadlock like follows:

process 1:			process 2:		process 3:
open("/proc/process 2/maps")
  - blocks waiting for response to
    FAN_OPEN_PERM event

				exec(2)
				  __do_execve_file()
				    - grabs current->signal->cred_guard_mutex
				    do_open_execat()
				      - blocks waiting for response to
					FAN_OPEN_PERM event

							reads fanotify event
							generated by process 1
							  create_fd()
							    dentry_open()
							      proc_maps_open()
							        blocks on
						cred_guard_mutex of process 2.

Now this is not the only case where you can setup fanotify permissions
events so that your listener deadlocks but I'd argue that this case is
especially nasty and it is unrealistic to expect from userspace that it
would be able to implement fanotify listener in such a way that is
deadlock-free for proc filesystem since the lock dependencies there are
very different. So how about we just forbid placing marks with fanotify
permission events on proc? Any other virtual filesystem we should exclude?

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-04-01 17:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-20 13:16 fanotify permission events on virtual filesystem Jan Kara
2019-03-20 13:46 ` Amir Goldstein
2019-03-20 14:30   ` Jan Kara
2019-03-20 15:02     ` Amir Goldstein
2019-03-21  8:36       ` Marko Rauhamaa
2019-04-01 17:26       ` Jan Kara

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.