linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Tvrtko Ursulin <tvrtko.ursulin@sophos.com>
Cc: Douglas Leeder <douglas.leeder@sophos.com>,
	Pavel Machek <pavel@ucw.cz>, Eric Paris <eparis@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	"malware-list@dmesg.printk.net" <malware-list@dmesg.printk.net>,
	"Valdis.Kletnieks@vt.edu" <Valdis.Kletnieks@vt.edu>,
	"greg@kroah.com" <greg@kroah.com>,
	"jcm@redhat.com" <jcm@redhat.com>,
	"tytso@mit.edu" <tytso@mit.edu>,
	"arjan@infradead.org" <arjan@infradead.org>,
	"david@lang.hm" <david@lang.hm>,
	"jengelh@medozas.de" <jengelh@medozas.de>,
	"aviro@redhat.com" <aviro@redhat.com>,
	"mrkafk@gmail.com" <mrkafk@gmail.com>,
	"alexl@redhat.com" <alexl@redhat.com>,
	"hch@infradead.org" <hch@infradead.org>,
	"alan@lxorguk.ukuu.org.uk" <alan@lxorguk.ukuu.org.uk>,
	"mmorley@hcl.in" <mmorley@hcl.in>
Subject: Re: fanotify - overall design before I start sending patches
Date: Thu, 06 Aug 2009 13:23:51 +0200	[thread overview]
Message-ID: <1249557831.32113.234.camel@twins> (raw)
In-Reply-To: <200908061159.45550.tvrtko.ursulin@sophos.com>

On Thu, 2009-08-06 at 11:59 +0100, Tvrtko Ursulin wrote:

> > I have to agree with Pavel here, either you demand the monitor process
> > is RT/mlock and can respond in time, in which case the interface doesn't
> > need a 5 second timeout, or you cannot and you have a hole somewhere.
> >
> > Now having the kernel depend on any user task to guarantee process is of
> > course utterly insane too.
> >
> > Sounds like a bad place to be, and I'd rather not have it.
> >
> > If you really need the intermediate you might as well use a FUSE
> > filesystem, but I suspect there's plenty of problems there as well.
> 
> So you mount FUSE on top of everything if you want to have systemwide 
> monitoring and then you _again_ depend on _userspace_, no? By this logic 
> everything has to be in kernel.

I was assuming there was an unprotected region on the system, otherwise
you cannot bootstrap this, nor maintain it -- see the daemon dies can't
start a new one problem.

But yes, if its so invasive to the filesystem as to make it unusable I'd
argue it to be part of the filesystem, we do filesystem encryption in
the filesystem, so why should we do such invasive scanning outside of
it?

We are taking about the kind of fanotify client that says: No you cannot
open/read/write/mmap/etc.. this file until I say you can, right?

I'd call that deeply invasive.

>  But even if it was, and the CPUs are so 
> overloaded that an userspace thread does not get to run at all for X seconds, 
> are kernel threads scheduled differently eg. with priority other than nice 
> levels?

No, except that some are run as RT processes, but other than that
they're simply yet another task.

Thing is, they don't do random things after a timeout. Its not like we
simply give up a BIO if its been in the queue for a second. No we see it
through.

> Also, it is not like that when the timeout expires the kernel will hang. 
> Rather, some application would get an error from open(2). Note how that is by 
> system configuration where the admin has made a _deliberate_ decision to 
> install such software which can cause this behaviour. 
>
> You can have a RT/mlocked client but what if it crashes (lets say busy loops)? 
> Which is also something timeout mechanism is guarding against.

By the above you're hosed anyway since starting a new one will fail due
to there being no daemon, right? Might as well forfeit all security
measures once the daemon dies. That is let security depend on there
being a daemon connected.

And once you do that, mandating the daemon to be a Real-Time process and
have everything mlocked to avoid it being DoS'd seems like a minimum
requirement.

> I really think if we want to have this functionality there is no way around 
> the fact that any userspace can fail. Kernel should handle it of course, and 
> Eric's design does it by kicking repeatedly misbehaving clients out.

Seems like a weird thing to me, suppose you DoS the system on purpose
and all clients start getting wonky, you kill them all, and are left
with non, then you cannot access any of your files anymore and
everything grinds to a halt?

> If the timeout is made configurable I think this is the best that can be done 
> here. I don't think the problem is so huge as you are presenting it.

I think having a timeout is simply asking for trouble - either you do or
you don't having a timeout is like having a random number generator for
a security policy.

Like said, having the filesystem block actions based on external
processes seems just asking for trouble.


  reply	other threads:[~2009-08-06 11:24 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-24 20:13 fanotify - overall design before I start sending patches Eric Paris
2009-07-24 20:48 ` david-gFPdbfVZQbY
     [not found]   ` <alpine.DEB.1.10.0907241340580.28013-Z4YwzcCRHZnr5h6Zg1Auow@public.gmane.org>
2009-07-24 21:01     ` Eric Paris
2009-07-24 21:44       ` Jamie Lokier
2009-07-27 17:52         ` Evgeniy Polyakov
2009-07-29 20:11           ` Eric Paris
2009-07-24 21:00 ` Andreas Dilger
2009-07-24 21:21   ` Eric Paris
2009-07-24 22:42     ` Andreas Dilger
2009-07-24 23:01       ` Jamie Lokier
2009-07-24 22:48 ` Jamie Lokier
     [not found]   ` <20090724224813.GK27755-yetKDKU6eevNLxjTenLetw@public.gmane.org>
2009-07-24 23:25     ` Eric Paris
2009-07-24 23:46       ` Jamie Lokier
2009-07-24 23:49     ` Eric Paris
2009-07-25  0:29       ` Jamie Lokier
2009-07-27 18:33         ` Andreas Dilger
2009-07-27 19:23           ` Jamie Lokier
2009-07-28 17:59             ` Andreas Dilger
     [not found]             ` <20090727192342.GA27895-yetKDKU6eevNLxjTenLetw@public.gmane.org>
2009-07-29 20:14               ` Eric Paris
     [not found]           ` <20090727183354.GM4231-RIaA196FMs1uuQVovAj/GogTZbYi8/ss@public.gmane.org>
2009-07-29 20:12             ` Eric Paris
2009-07-29 20:07         ` Eric Paris
2009-07-27 16:54     ` Jan Kara
2009-07-25 14:22 ` Niraj kumar
2009-07-29 20:08   ` Eric Paris
2009-07-28 11:48 ` Jon Masters
     [not found]   ` <1248781708.14145.21.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-07-29 20:20     ` Eric Paris
2009-08-03 16:23 ` Christoph Hellwig
     [not found]   ` <20090803162303.GA31058-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2009-08-03 16:55     ` Eric Paris
2009-08-03 18:04       ` Christoph Hellwig
     [not found]         ` <20090803180437.GA9798-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2009-08-03 18:13           ` Eric Paris
2009-08-04 16:09 ` Tvrtko Ursulin
     [not found]   ` <200908041709.51659.tvrtko.ursulin-j34lQMj1tz/QT0dZR+AlfA@public.gmane.org>
2009-08-04 16:27     ` Eric Paris
2009-08-04 16:39       ` Tvrtko Ursulin
     [not found]       ` <1249403268.2361.21.camel-8EcGF3LoIElviLIMxPk1+R/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2009-08-04 17:22         ` Valdis.Kletnieks-PjAqaU27lzQ
     [not found]           ` <19585.1249406551-+bZmOdGhbsPr6rcHtW+onFJE71vCis6O@public.gmane.org>
2009-08-04 18:20             ` John Stoffel
     [not found]               ` <19064.31705.491774.122207-HgN6juyGXH5AfugRpC6u6w@public.gmane.org>
2009-08-04 18:50                 ` Eric Paris
2009-08-05  9:32               ` Tvrtko Ursulin
2009-08-04 16:34 ` Tvrtko Ursulin
     [not found]   ` <200908041734.05762.tvrtko.ursulin-j34lQMj1tz/QT0dZR+AlfA@public.gmane.org>
2009-08-05 10:12     ` Douglas Leeder
2009-08-05 10:35   ` Douglas Leeder
2009-08-05  2:05 ` Pavel Machek
2009-08-05 16:46   ` Tvrtko Ursulin
     [not found]     ` <200908051746.17903.tvrtko.ursulin-j34lQMj1tz/QT0dZR+AlfA@public.gmane.org>
2009-08-06 10:10       ` Pavel Machek
2009-08-06 10:20         ` Tvrtko Ursulin
2009-08-06 10:24           ` Pavel Machek
     [not found]         ` <20090806101059.GD31370-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2009-08-06 10:20           ` Douglas Leeder
2009-08-06 10:22             ` Pavel Machek
2009-08-07  8:59               ` Jamie Lokier
2009-08-06 10:29             ` Peter Zijlstra
2009-08-06 10:59               ` Tvrtko Ursulin
2009-08-06 11:23                 ` Peter Zijlstra [this message]
2009-08-06 12:48                   ` Tvrtko Ursulin
     [not found]                     ` <200908061348.43625.tvrtko.ursulin-j34lQMj1tz/QT0dZR+AlfA@public.gmane.org>
2009-08-06 12:58                       ` Alan Cox
     [not found]                         ` <20090806135800.7ccb7787-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2009-08-06 18:18                           ` Eric Paris
2009-08-06 13:50                   ` Kernel Event Notification Subsystem (was: fanotify - overall design before I start sending patches) Al Boldi
2009-08-06 13:50                   ` Al Boldi
2009-08-06 18:18                   ` fanotify - overall design before I start sending patches Eric Paris
2009-08-07 16:36                     ` Miklos Szeredi
     [not found]                       ` <E1MZSQZ-0002as-FA-8f8m9JG5TPIdUIPVzhDTVZP2KDSNp7ea@public.gmane.org>
2009-08-07 17:43                         ` Eric Paris
2009-08-08 10:36                           ` Pavel Machek
2009-08-10 10:03                           ` Miklos Szeredi
     [not found]                     ` <1249582695.20644.35.camel-8EcGF3LoIElviLIMxPk1+R/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2009-08-08 10:34                       ` Pavel Machek
     [not found]                 ` <200908061159.45550.tvrtko.ursulin-j34lQMj1tz/QT0dZR+AlfA@public.gmane.org>
2009-08-06 11:24                   ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1249557831.32113.234.camel@twins \
    --to=a.p.zijlstra@chello.nl \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=alexl@redhat.com \
    --cc=arjan@infradead.org \
    --cc=aviro@redhat.com \
    --cc=david@lang.hm \
    --cc=douglas.leeder@sophos.com \
    --cc=eparis@redhat.com \
    --cc=greg@kroah.com \
    --cc=hch@infradead.org \
    --cc=jcm@redhat.com \
    --cc=jengelh@medozas.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=malware-list@dmesg.printk.net \
    --cc=mmorley@hcl.in \
    --cc=mrkafk@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=tvrtko.ursulin@sophos.com \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).