From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: "Arve Hjønnevåg" <arve@android.com>
Cc: ncunningham@crca.org.au, u.luckas@road.de, swetland@google.com,
linux-pm@lists.linux-foundation.org
Subject: Re: [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space
Date: Fri, 8 May 2009 16:22:43 +0200 [thread overview]
Message-ID: <200905081622.44205.rjw@sisk.pl> (raw)
In-Reply-To: <d6200be20905071743r72d94e26na4a945be88a2e366@mail.gmail.com>
On Friday 08 May 2009, Arve Hjønnevåg wrote:
> On Thu, May 7, 2009 at 3:32 AM, Pavel Machek <pavel@ucw.cz> wrote:
> > On Wed 2009-05-06 18:42:59, Arve Hj?nnev?g wrote:
> >> On Tue, May 5, 2009 at 1:12 PM, Pavel Machek <pavel@ucw.cz> wrote:
> >> > Hi!
> >> >
> >> >> Add a misc device, "suspend_blocker", that allows user-space processes
> >> >> to block auto suspend. The device has ioctls to create a suspend_blocker,
> >> >> and to block and unblock suspend. To delete the suspend_blocker, close
> >> >> the device.
> >> >
> >> > Rafael proposed write() interface. I don't think you answered that.
> >> >
> >>
> >> I think an ioctl interface makes more sense. With a write interface
> >> you either have to do string parsing, or invent some other protocol
> >> between the driver and user-space.
> >
> > Or perhaps just use "userspace/%d" % pid as a name?
>
> This would not be as useful. The point of naming the suspend blockers
> is to that we can easily identify them in the stats and kernel logs.
> Using the pid has two problems. First, the pid gives no hint about
> what it is used for, you have to look up the process somewhere else.
> Second, we use more than one suspend blocker from the same process.
>
> >
> > 1) can't be faked that trivially
>
> I don't think this is a big problem. If you don't trust the apps that
> you give suspend blocker access to use unique names, we can add a
> prefix. This can be added in a later patch though.
>
> >
> > 2) small / mostly fixed size
> >
> > 3) can use nicer write protocol?
> >
> I don't think a write protocol is nicer. "ioctl(suspend_block_fd,
> SUSPEND_BLOCKER_IOCTL_BLOCK);" seems less error prone and more
> readable to me than "write(suspend_block_fd, "1", 1);",
> "write(suspend_block_fd, "1", 2);" or "suspend_block_val = 1;
> write(suspend_block_fd, &suspend_block_val,
> sizeof(suspend_block_val));".
>
> >> > kzalloc on user-supplied argument. Sounds like bad idea.
> >> >
> >> > Aha. And probably integer overflow in the same line. Ouch.
> >> >
> >>
> >> The size is limited to _IOC_SIZEMASK with is 13 or 14 bits depending
> >> on the architecture. Do you want a lower limit on the name length?
> >
> > 16K of unswappable kernel memory for name is a bit too much, yes.
>
> What if I just truncate it to NAME_MAX.
My main concern with the ioctl() interface is that you're adding a device
file just in order to have the ioctl()s available. Usually, however, a device
file's purpose is to implement file operations (open, close, read, write),
while ioctl()s are used for doing things that the file operations are not
suitable for.
So, if your device only implements open(), close() and ioctl(), this is an
indication that there's something wrong with the interface, because it doesn't
do what one would generally expect it to do (ie. smells like an abuse). That's
why I think it would be better to use read() and write() instead of ioctl().
Of course, there also is a problem that people generally don't like adding new
ioctl()s without a _really_ good reason.
Thanks,
Rafael
next prev parent reply other threads:[~2009-05-08 14:22 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-06 4:18 [RFC][PATCH 0/9] Suspend block api (version 3) Arve Hjønnevåg
2009-05-06 4:18 ` [PATCH 1/9] PM: Add suspend block api Arve Hjønnevåg
2009-05-06 4:18 ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
2009-05-05 20:12 ` Pavel Machek
2009-05-07 1:42 ` Arve Hjønnevåg
2009-05-07 10:32 ` Pavel Machek
2009-05-08 0:43 ` Arve Hjønnevåg
2009-05-08 14:22 ` Rafael J. Wysocki [this message]
2009-05-09 0:38 ` Arve Hjønnevåg
2009-05-05 20:16 ` Pavel Machek
2009-05-07 1:31 ` Arve Hjønnevåg
2009-05-07 10:43 ` Pavel Machek
2009-05-06 4:18 ` [PATCH 3/9] PM: suspend_block: Abort task freezing if a suspend_blocker is active Arve Hjønnevåg
2009-05-05 19:57 ` Pavel Machek
2009-05-07 1:51 ` Arve Hjønnevåg
2009-05-07 10:41 ` Pavel Machek
2009-05-07 23:49 ` Arve Hjønnevåg
2009-05-08 1:06 ` Nigel Cunningham
2009-05-08 1:22 ` Arve Hjønnevåg
2009-05-08 1:35 ` Nigel Cunningham
2009-05-08 14:40 ` Rafael J. Wysocki
2009-05-08 22:27 ` Nigel Cunningham
2009-05-08 23:01 ` Rafael J. Wysocki
2009-05-09 0:12 ` Nigel Cunningham
2009-05-12 10:05 ` Pavel Machek
2009-05-12 16:55 ` Rafael J. Wysocki
2009-05-12 19:33 ` Pavel Machek
2009-05-12 10:04 ` Pavel Machek
2009-05-08 0:22 ` Rafael J. Wysocki
2009-05-06 4:18 ` [PATCH 4/9] Input: Block suspend while event queue is not empty Arve Hjønnevåg
2009-05-05 20:02 ` Pavel Machek
2009-05-07 1:57 ` Arve Hjønnevåg
2009-05-06 4:18 ` [PATCH 5/9] PM: suspend_block: Switch to list of active and inactive suspend blockers Arve Hjønnevåg
2009-05-06 4:18 ` [PATCH 6/9] PM: suspend_block: Add debugfs file Arve Hjønnevåg
2009-05-06 4:18 ` [PATCH 7/9] PM: suspend_block: Add suspend_blocker stats Arve Hjønnevåg
2009-05-06 4:18 ` [PATCH 8/9] PM: suspend_block: Add timeout support Arve Hjønnevåg
2009-05-06 4:18 ` [PATCH 9/9] PM: suspend_block: Add timeout support to user-space suspend_blockers Arve Hjønnevåg
2009-05-06 17:17 ` [RFC][PATCH 0/9] Suspend block api (version 3) Kevin Hilman
2009-05-07 22:42 ` Arve Hjønnevåg
2009-05-08 16:01 ` mark gross
2009-05-08 23:36 ` Kevin Hilman
2009-05-15 19:58 ` Pavel Machek
[not found] <Pine.LNX.4.44L0.1004271432280.1850-100000@iolanthe.rowland.org>
2010-04-27 22:03 ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Rafael J. Wysocki
[not found] ` <201004280003.31668.rjw@sisk.pl>
2010-04-27 23:22 ` Arve Hjønnevåg
[not found] <y2nd6200be21004262104mb81ba7d6xe5c8f35689ca20a0@mail.gmail.com>
2010-04-27 18:33 ` Alan Stern
[not found] <v2ld6200be21004251534y6c820e96l824f3288201a757d@mail.gmail.com>
2010-04-26 19:25 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1004261518130.1764-100000@iolanthe.rowland.org>
2010-04-27 4:04 ` Arve Hjønnevåg
[not found] <20100424055523.GC2290@elf.ucw.cz>
2010-04-24 14:44 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1004241037230.6848-100000@netrider.rowland.org>
2010-04-25 22:34 ` Arve Hjønnevåg
[not found] <1271984938-13920-1-git-send-email-arve@android.com>
[not found] ` <1271984938-13920-2-git-send-email-arve@android.com>
2010-04-23 1:08 ` Arve Hjønnevåg
2010-04-23 2:25 ` Matt Helsley
[not found] ` <20100423022522.GB32490@count0.beaverton.ibm.com>
2010-04-23 3:54 ` Arve Hjønnevåg
2010-04-23 4:38 ` Greg KH
2010-04-23 8:43 ` Pavel Machek
[not found] ` <20100423084349.GC1573@ucw.cz>
2010-04-23 16:43 ` Alan Stern
2010-04-24 1:53 ` tytso
[not found] ` <Pine.LNX.4.44L0.1004231242460.1777-100000@iolanthe.rowland.org>
2010-04-24 3:20 ` Arve Hjønnevåg
[not found] ` <i2zd6200be21004232020t46f4de0ct93b94e2bd67a6e76@mail.gmail.com>
2010-04-24 5:55 ` Pavel Machek
[not found] ` <20100424015334.GO14986@thunk.org>
2010-04-24 5:39 ` Pavel Machek
-- strict thread matches above, loose matches on Subject: below --
2009-04-30 3:09 [RFC][PATCH 0/9] Suspend block api (version 2) Arve Hjønnevåg
2009-04-30 3:10 ` [PATCH 1/9] PM: Add suspend block api Arve Hjønnevåg
2009-04-30 3:10 ` [PATCH 2/9] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
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=200905081622.44205.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=arve@android.com \
--cc=linux-pm@lists.linux-foundation.org \
--cc=ncunningham@crca.org.au \
--cc=swetland@google.com \
--cc=u.luckas@road.de \
/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