From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: David Howells <dhowells@redhat.com>
Cc: viro@zeniv.linux.org.uk, Casey Schaufler <casey@schaufler-ca.com>,
Stephen Smalley <sds@tycho.nsa.gov>,
nicolas.dichtel@6wind.com, raven@themaw.net,
Christian Brauner <christian@brauner.io>,
keyrings@vger.kernel.org, linux-usb@vger.kernel.org,
linux-security-module@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 8/9] usb: Add USB subsystem notifications [ver #5]
Date: Wed, 03 Jul 2019 17:07:38 +0000 [thread overview]
Message-ID: <20190703170738.GA24672@kroah.com> (raw)
In-Reply-To: <156173698939.15137.11150923486478934112.stgit@warthog.procyon.org.uk>
On Fri, Jun 28, 2019 at 04:49:49PM +0100, David Howells wrote:
> Add a USB subsystem notification mechanism whereby notifications about
> hardware events such as device connection, disconnection, reset and I/O
> errors, can be reported to a monitoring process asynchronously.
>
> Firstly, an event queue needs to be created:
>
> fd = open("/dev/event_queue", O_RDWR);
> ioctl(fd, IOC_WATCH_QUEUE_SET_SIZE, page_size << n);
>
> then a notification can be set up to report USB notifications via that
> queue:
>
> struct watch_notification_filter filter = {
> .nr_filters = 1,
> .filters = {
> [0] = {
> .type = WATCH_TYPE_USB_NOTIFY,
> .subtype_filter[0] = UINT_MAX;
> },
> },
> };
> ioctl(fd, IOC_WATCH_QUEUE_SET_FILTER, &filter);
> notify_devices(fd, 12);
>
> After that, records will be placed into the queue when events occur on a
> USB device or bus. Records are of the following format:
>
> struct usb_notification {
> struct watch_notification watch;
> __u32 error;
> __u32 reserved;
> __u8 name_len;
> __u8 name[0];
> } *n;
>
> Where:
>
> n->watch.type will be WATCH_TYPE_USB_NOTIFY
>
> n->watch.subtype will be the type of notification, such as
> NOTIFY_USB_DEVICE_ADD.
>
> n->watch.info & WATCH_INFO_LENGTH will indicate the length of the
> record.
>
> n->watch.info & WATCH_INFO_ID will be the second argument to
> device_notify(), shifted.
>
> n->error and n->reserved are intended to convey information such as
> error codes, but are currently not used
>
> n->name_len and n->name convey the USB device name as an
> unterminated string. This may be truncated - it is currently
> limited to a maximum 63 chars.
>
> Note that it is permissible for event records to be of variable length -
> or, at least, the length may be dependent on the subtype.
>
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> cc: linux-usb@vger.kernel.org
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: David Howells <dhowells@redhat.com>
Cc: viro@zeniv.linux.org.uk, Casey Schaufler <casey@schaufler-ca.com>,
Stephen Smalley <sds@tycho.nsa.gov>,
nicolas.dichtel@6wind.com, raven@themaw.net,
Christian Brauner <christian@brauner.io>,
keyrings@vger.kernel.org, linux-usb@vger.kernel.org,
linux-security-module@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 8/9] usb: Add USB subsystem notifications [ver #5]
Date: Wed, 3 Jul 2019 19:07:38 +0200 [thread overview]
Message-ID: <20190703170738.GA24672@kroah.com> (raw)
In-Reply-To: <156173698939.15137.11150923486478934112.stgit@warthog.procyon.org.uk>
On Fri, Jun 28, 2019 at 04:49:49PM +0100, David Howells wrote:
> Add a USB subsystem notification mechanism whereby notifications about
> hardware events such as device connection, disconnection, reset and I/O
> errors, can be reported to a monitoring process asynchronously.
>
> Firstly, an event queue needs to be created:
>
> fd = open("/dev/event_queue", O_RDWR);
> ioctl(fd, IOC_WATCH_QUEUE_SET_SIZE, page_size << n);
>
> then a notification can be set up to report USB notifications via that
> queue:
>
> struct watch_notification_filter filter = {
> .nr_filters = 1,
> .filters = {
> [0] = {
> .type = WATCH_TYPE_USB_NOTIFY,
> .subtype_filter[0] = UINT_MAX;
> },
> },
> };
> ioctl(fd, IOC_WATCH_QUEUE_SET_FILTER, &filter);
> notify_devices(fd, 12);
>
> After that, records will be placed into the queue when events occur on a
> USB device or bus. Records are of the following format:
>
> struct usb_notification {
> struct watch_notification watch;
> __u32 error;
> __u32 reserved;
> __u8 name_len;
> __u8 name[0];
> } *n;
>
> Where:
>
> n->watch.type will be WATCH_TYPE_USB_NOTIFY
>
> n->watch.subtype will be the type of notification, such as
> NOTIFY_USB_DEVICE_ADD.
>
> n->watch.info & WATCH_INFO_LENGTH will indicate the length of the
> record.
>
> n->watch.info & WATCH_INFO_ID will be the second argument to
> device_notify(), shifted.
>
> n->error and n->reserved are intended to convey information such as
> error codes, but are currently not used
>
> n->name_len and n->name convey the USB device name as an
> unterminated string. This may be truncated - it is currently
> limited to a maximum 63 chars.
>
> Note that it is permissible for event records to be of variable length -
> or, at least, the length may be dependent on the subtype.
>
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> cc: linux-usb@vger.kernel.org
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
next prev parent reply other threads:[~2019-07-03 17:07 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-28 15:48 [PATCH 0/9] Keyrings, Block and USB notifications [ver #5] David Howells
2019-06-28 15:48 ` David Howells
2019-06-28 15:48 ` David Howells
2019-06-28 15:48 ` [PATCH 1/9] uapi: General notification ring definitions " David Howells
2019-06-28 15:48 ` David Howells
2019-06-28 15:48 ` David Howells
2019-07-03 17:08 ` Greg Kroah-Hartman
2019-07-03 17:08 ` Greg Kroah-Hartman
2019-06-28 15:48 ` [PATCH 2/9] security: Add hooks to rule on setting a watch " David Howells
2019-06-28 15:48 ` David Howells
2019-06-28 15:48 ` David Howells
2019-07-08 18:46 ` Stephen Smalley
2019-07-08 18:46 ` Stephen Smalley
2019-06-28 15:49 ` [PATCH 3/9] security: Add a hook for the point of notification insertion " David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` David Howells
2019-07-08 19:13 ` Stephen Smalley
2019-07-08 19:13 ` Stephen Smalley
2019-06-28 15:49 ` [PATCH 4/9] General notification queue with user mmap()'able ring buffer " David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` David Howells
2019-07-03 17:11 ` Greg Kroah-Hartman
2019-07-03 17:11 ` Greg Kroah-Hartman
2019-06-28 15:49 ` [PATCH 5/9] keys: Add a notification facility " David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` [PATCH 6/9] Add a general, global device notification watch list " David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` David Howells
2019-07-03 17:16 ` Greg Kroah-Hartman
2019-07-03 17:16 ` Greg Kroah-Hartman
2019-07-03 19:08 ` Greg Kroah-Hartman
2019-07-03 19:08 ` Greg Kroah-Hartman
2019-07-04 16:04 ` David Howells
2019-07-04 16:04 ` David Howells
2019-07-05 5:17 ` Greg Kroah-Hartman
2019-07-05 5:17 ` Greg Kroah-Hartman
2019-07-05 8:04 ` David Howells
2019-07-05 8:04 ` David Howells
2019-07-05 8:44 ` Greg Kroah-Hartman
2019-07-05 8:44 ` Greg Kroah-Hartman
2019-07-05 14:40 ` Alan Stern
2019-07-05 14:40 ` Alan Stern
2019-07-05 14:40 ` Alan Stern
2019-06-28 15:49 ` [PATCH 7/9] block: Add block layer notifications " David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` [PATCH 8/9] usb: Add USB subsystem " David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` David Howells
2019-07-03 17:07 ` Greg Kroah-Hartman [this message]
2019-07-03 17:07 ` Greg Kroah-Hartman
2019-06-28 15:49 ` [PATCH 9/9] Add sample notification program " David Howells
2019-06-28 15:49 ` David Howells
2019-06-28 15:49 ` David Howells
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=20190703170738.GA24672@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=casey@schaufler-ca.com \
--cc=christian@brauner.io \
--cc=dhowells@redhat.com \
--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=sds@tycho.nsa.gov \
--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 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.