From: David Howells <dhowells@redhat.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: dhowells@redhat.com, Ray Strode <rstrode@redhat.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Steven Whitehouse <swhiteho@redhat.com>,
Nicolas Dichtel <nicolas.dichtel@6wind.com>,
raven@themaw.net, keyrings@vger.kernel.org,
linux-usb@vger.kernel.org,
linux-block <linux-block@vger.kernel.org>,
Christian Brauner <christian@brauner.io>,
LSM List <linux-security-module@vger.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Linux API <linux-api@vger.kernel.org>,
Linux List Kernel Mailing <linux-kernel@vger.kernel.org>,
Al Viro <viro@zeniv.linux.org.uk>,
"Ray, Debarshi" <debarshi.ray@gmail.com>,
Robbie Harwood <rharwood@redhat.com>
Subject: Re: Why add the general notification queue and its sources
Date: Fri, 06 Sep 2019 11:09:17 +0100 [thread overview]
Message-ID: <27732.1567764557@warthog.procyon.org.uk> (raw)
In-Reply-To: <CAHk-=wjt2Eb+yEDOcQwCa0SrZ4cWu967OtQG8Vz21c=n5ZP1Nw@mail.gmail.com>
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> But it's *literally* just finding the places that work with
> pipe->curbuf/nrbufs and making them use atomic updates.
No. It really isn't. That's two variables that describe the occupied section
of the buffer. Unless you have something like a 68020 with CAS2, or put them
next to each other so you can use CMPXCHG8, you can't do that.
They need converting to head/tail pointers first.
> They really would work with almost anything. You could even mix-and-match
> "data generated by kernel" and "data done by 'write()' or 'splice()' by a
> user process".
Imagine that userspace writes a large message and takes the mutex. At the
same time something in softirq context decides *it* wants to write a message -
it can't take the mutex and it can't wait, so the userspace write would have
to cause the kernel message to be dropped.
What I would have to do is make a write to a notification pipe go through
post_notification() and limit the size to the maximum for a single message.
Much easier to simply suppress writes and splices on pipes that have been set
up to be notification queues - at least for now.
David
next prev parent reply other threads:[~2019-09-06 10:09 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-04 22:15 [PATCH 00/11] Keyrings, Block and USB notifications [ver #8] David Howells
2019-09-04 22:15 ` [PATCH 01/11] uapi: General notification ring definitions " David Howells
2019-09-04 22:16 ` [PATCH 02/11] security: Add hooks to rule on setting a watch " David Howells
2019-09-04 22:16 ` [PATCH 03/11] security: Add a hook for the point of notification insertion " David Howells
2019-09-04 22:16 ` [PATCH 04/11] General notification queue with user mmap()'able ring buffer " David Howells
2019-09-04 22:16 ` [PATCH 05/11] keys: Add a notification facility " David Howells
2019-09-04 22:16 ` [PATCH 06/11] Add a general, global device notification watch list " David Howells
2019-09-04 22:16 ` [PATCH 07/11] block: Add block layer notifications " David Howells
2019-09-04 22:16 ` [PATCH 08/11] usb: Add USB subsystem " David Howells
2019-09-04 22:17 ` [PATCH 09/11] Add sample notification program " David Howells
2019-09-04 22:17 ` [PATCH 10/11] selinux: Implement the watch_key security hook " David Howells
2019-09-04 22:17 ` [PATCH 11/11] smack: Implement the watch_key and post_notification hooks " David Howells
2019-09-04 22:28 ` [PATCH 00/11] Keyrings, Block and USB notifications " Linus Torvalds
2019-09-05 17:01 ` Why add the general notification queue and its sources David Howells
2019-09-05 17:19 ` Linus Torvalds
2019-09-05 18:32 ` Ray Strode
2019-09-05 20:39 ` Linus Torvalds
2019-09-06 19:32 ` Ray Strode
2019-09-06 19:41 ` Ray Strode
2019-09-06 19:53 ` Robbie Harwood
2019-09-05 21:32 ` David Howells
2019-09-05 22:08 ` Linus Torvalds
2019-09-05 23:18 ` David Howells
2019-09-06 0:07 ` Linus Torvalds
2019-09-06 10:09 ` David Howells [this message]
2019-09-06 15:35 ` Linus Torvalds
2019-09-06 15:53 ` Linus Torvalds
2019-09-06 16:12 ` Steven Whitehouse
2019-09-06 17:07 ` Linus Torvalds
2019-09-06 17:14 ` Linus Torvalds
2019-09-06 21:19 ` David Howells
2019-09-06 17:14 ` Andy Lutomirski
2019-09-05 18:37 ` Steven Whitehouse
2019-09-05 18:51 ` Ray Strode
2019-09-05 20:09 ` David Lehman
2019-09-05 18:33 ` Greg Kroah-Hartman
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=27732.1567764557@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=christian@brauner.io \
--cc=debarshi.ray@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=keyrings@vger.kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=nicolas.dichtel@6wind.com \
--cc=raven@themaw.net \
--cc=rharwood@redhat.com \
--cc=rstrode@redhat.com \
--cc=swhiteho@redhat.com \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/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).