linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/12] Add kdbus implementation
@ 2014-10-29 22:00 Greg Kroah-Hartman
  2014-10-29 22:00 ` kdbus: add documentation Greg Kroah-Hartman
                   ` (16 more replies)
  0 siblings, 17 replies; 104+ messages in thread
From: Greg Kroah-Hartman @ 2014-10-29 22:00 UTC (permalink / raw)
  To: linux-api, linux-kernel
  Cc: john.stultz, arnd, tj, marcel, desrt, hadess, dh.herrmann,
	tixxdz, gregkh, simon.mcvittie, daniel, alban.crequy,
	javier.martinez, teg

kdbus is a kernel-level IPC implementation that aims for resemblance to
the the protocol layer with the existing userspace D-Bus daemon while
enabling some features that couldn't be implemented before in userspace.

The documentation added by the first patch in this series is meant to
explain all protocol and API details comprehensively, but here's a terse
list of the kdbus key features:

 * Implemented as a char driver, which creates devices on demand when
   they are created.

 * Message transfer over shared memory areas in each of the peer's
   task to avoid unnecessary extra data copies during message exchanges.

 * Optional passing of file descriptors and sealed memfds along with
   messages.

 * No demarshalling of any message content from inside the kernel;
   the driver stays entirely agnostic to the transported payload.

 * Support for multiple domains, completely separated from each other,
   allowing multiple virtualized instances to be used at the same time.

 * Support for peer-to-peer unicast and multicast messages.

 * Attachment of trustable metadata to each message on demand, such as
   the sending peer's timestamp, creds, auxgroups, comm, exe, cmdline,
   cgroup path, capabilities, security label, audit information, etc,
   each taken at the time the sender issued the ioctl to send the
   message. Which of those are actually recorded and attached is
   controlled by the receiving peer.

 * Bloom filters as measure to pre-filter broadcast messages and to
   mitigate unnecessary task wakeups. On the side kernel, however, this
   is just a cheap &-operation, hash functions are left to be
   implemented by userspace.

 * Optional message dequeuing by priority, allowing multiple types of
   payloads of different priorities to be transported over the same
   connection.

 * Global, domain-wide guaranteed message ordering.

 * Eavesdropping for buses for debugging

 * Adressing of remote peers by their numerical unique ID, or by a
   well-known name.

 * Built-in name registry for atomic name ownership lookups, claims,
   releases and take-overs from one peer to another.

 * Simple policy database to restrict peers from seeing or talking to
   each other, and to control name ownership.

 * Custom bus endpoints in addition to the default ones. Those allow
   to upload extra policy rules, and can act as a protocol-filtering
   bus firewall.

 * Kernel-generated notifications on connected and disconnected peers,
   claimed and released well-known-names, and exceeded reply timeouts.

This is the first submission of kdbus by the kernel community.  It was
developed in its own repository for well more than a year, and has been
tested on x64-64, i686 and ARM architectures in various use cases. The
driver is totally non-intrusive and doesn't touch a single line of
existing kernel code.

kdbus has been worked on collaboratively by many people contributing
code and suggestions during its development. Below is a list of all
involved individuals, in alphabetical order.

  Alban Crequy, Arnd Bergmann, Christian S., Daniel Kowalski,
  Daniel Mack, David Herrmann, Djalal Harouni, Govindarajulu
  Varadarajan, Greg Kroah-Hartman, Harald Hoyer, Hristo Venev,
  Ingo van Lil, Jacek Janczyk, Jason A. Donenfeld, John de
  la Garza, Kay Sievers, Lennart Poettering, Lukasz Skalski,
  Maciej Wereski, Marc-Antoine Perennou, Marcel Holtmann,
  Michal Eljasiewicz, Michele Curti, Przemyslaw Kedzierski,
  Radoslaw Pajak, Ryan Lortie, Simon McVittie, Simon Peeters,
  Stefan Beller, Ted Feng, Tejun Heo, Tero Roponen, Thomas
  Andersen, Torstein Husebø, Vasiliy Balyasnyy.

Some statistics: the driver itself has a little more than 11k lines,
with ~25% of the lines being comments. Our test suite weights in for
another 6k lines, and the API documentation file currently has >1800
lines. The loaded kernel module has ~70kB of text size.

Patches #3 to #10 carry the driver implementation in digestable bites,
but only #11 adds the Makefile to actually compile them. That division
can of course be changed, and the patches be squashed and reordered
later.

The rest should be pretty much self-explanatory - the individual commit
logs and Documentation/kdbus.txt contain detailed information on the
driver's inner life.

While we consider the kernel API/ABI mostly stable at this point, we're
still in the process of fixing up some ends in userspace, such as
compatibility layers and the D-Bus spec, but that shouldn't affect the
kernel side much anymore.

As for maintainership, Daniel Mack, David Herrmann, Djalal Harouni and
myself would be taking care for it in the future.

I'll also be keeping this in a git tree, the kdbus branch of
char-misc.git at:
	https://git.kernel.org/cgit/linux/kernel/git/gregkh/char-misc.git/

thanks,

greg k-h

Daniel Mack (12):
  kdbus: add documentation
  kdbus: add header file
  kdbus: add driver skeleton, ioctl entry points and utility functions
  kdbus: add connection pool implementation
  kdbus: add connection, queue handling and message validation code
  kdbus: add code to gather metadata
  kdbus: add code for notifications and matches
  kdbus: add code for buses, domains and endpoints
  kdbus: add name registry implementation
  kdbus: add policy database implementation
  kdbus: add Makefile, Kconfig and MAINTAINERS entry
  kdbus: add selftests

 Documentation/ioctl/ioctl-number.txt             |    1 +
 Documentation/kdbus.txt                          | 1815 ++++++++++++++++++++++
 MAINTAINERS                                      |   12 +
 drivers/misc/Kconfig                             |    1 +
 drivers/misc/Makefile                            |    1 +
 drivers/misc/kdbus/Kconfig                       |   11 +
 drivers/misc/kdbus/Makefile                      |   19 +
 drivers/misc/kdbus/bus.c                         |  450 ++++++
 drivers/misc/kdbus/bus.h                         |  107 ++
 drivers/misc/kdbus/connection.c                  | 1751 +++++++++++++++++++++
 drivers/misc/kdbus/connection.h                  |  177 +++
 drivers/misc/kdbus/domain.c                      |  477 ++++++
 drivers/misc/kdbus/domain.h                      |  105 ++
 drivers/misc/kdbus/endpoint.c                    |  567 +++++++
 drivers/misc/kdbus/endpoint.h                    |   94 ++
 drivers/misc/kdbus/handle.c                      | 1221 +++++++++++++++
 drivers/misc/kdbus/handle.h                      |   46 +
 drivers/misc/kdbus/item.c                        |  256 +++
 drivers/misc/kdbus/item.h                        |   40 +
 drivers/misc/kdbus/limits.h                      |   77 +
 drivers/misc/kdbus/main.c                        |   70 +
 drivers/misc/kdbus/match.c                       |  521 +++++++
 drivers/misc/kdbus/match.h                       |   30 +
 drivers/misc/kdbus/message.c                     |  420 +++++
 drivers/misc/kdbus/message.h                     |   72 +
 drivers/misc/kdbus/metadata.c                    |  626 ++++++++
 drivers/misc/kdbus/metadata.h                    |   51 +
 drivers/misc/kdbus/names.c                       |  920 +++++++++++
 drivers/misc/kdbus/names.h                       |   81 +
 drivers/misc/kdbus/notify.c                      |  235 +++
 drivers/misc/kdbus/notify.h                      |   28 +
 drivers/misc/kdbus/policy.c                      |  617 ++++++++
 drivers/misc/kdbus/policy.h                      |   60 +
 drivers/misc/kdbus/pool.c                        |  728 +++++++++
 drivers/misc/kdbus/pool.h                        |   43 +
 drivers/misc/kdbus/queue.c                       |  602 +++++++
 drivers/misc/kdbus/queue.h                       |   82 +
 drivers/misc/kdbus/util.c                        |  108 ++
 drivers/misc/kdbus/util.h                        |   94 ++
 include/uapi/linux/kdbus.h                       |  918 +++++++++++
 tools/testing/selftests/Makefile                 |    1 +
 tools/testing/selftests/kdbus/.gitignore         |   11 +
 tools/testing/selftests/kdbus/Makefile           |   46 +
 tools/testing/selftests/kdbus/kdbus-enum.c       |   90 ++
 tools/testing/selftests/kdbus/kdbus-enum.h       |   14 +
 tools/testing/selftests/kdbus/kdbus-test.c       |  474 ++++++
 tools/testing/selftests/kdbus/kdbus-test.h       |   79 +
 tools/testing/selftests/kdbus/kdbus-util.c       | 1173 ++++++++++++++
 tools/testing/selftests/kdbus/kdbus-util.h       |  139 ++
 tools/testing/selftests/kdbus/test-activator.c   |  317 ++++
 tools/testing/selftests/kdbus/test-benchmark.c   |  417 +++++
 tools/testing/selftests/kdbus/test-bus.c         |  117 ++
 tools/testing/selftests/kdbus/test-chat.c        |  123 ++
 tools/testing/selftests/kdbus/test-connection.c  |  258 +++
 tools/testing/selftests/kdbus/test-daemon.c      |   66 +
 tools/testing/selftests/kdbus/test-domain.c      |   65 +
 tools/testing/selftests/kdbus/test-endpoint.c    |  221 +++
 tools/testing/selftests/kdbus/test-fd.c          |  473 ++++++
 tools/testing/selftests/kdbus/test-free.c        |   34 +
 tools/testing/selftests/kdbus/test-match.c       |  385 +++++
 tools/testing/selftests/kdbus/test-message.c     |  126 ++
 tools/testing/selftests/kdbus/test-metadata-ns.c |  236 +++
 tools/testing/selftests/kdbus/test-monitor.c     |  156 ++
 tools/testing/selftests/kdbus/test-names.c       |  184 +++
 tools/testing/selftests/kdbus/test-policy-ns.c   |  578 +++++++
 tools/testing/selftests/kdbus/test-policy-priv.c | 1168 ++++++++++++++
 tools/testing/selftests/kdbus/test-policy.c      |   81 +
 tools/testing/selftests/kdbus/test-race.c        |  313 ++++
 tools/testing/selftests/kdbus/test-sync.c        |  241 +++
 tools/testing/selftests/kdbus/test-timeout.c     |   97 ++
 70 files changed, 21217 insertions(+)
 create mode 100644 Documentation/kdbus.txt
 create mode 100644 drivers/misc/kdbus/Kconfig
 create mode 100644 drivers/misc/kdbus/Makefile
 create mode 100644 drivers/misc/kdbus/bus.c
 create mode 100644 drivers/misc/kdbus/bus.h
 create mode 100644 drivers/misc/kdbus/connection.c
 create mode 100644 drivers/misc/kdbus/connection.h
 create mode 100644 drivers/misc/kdbus/domain.c
 create mode 100644 drivers/misc/kdbus/domain.h
 create mode 100644 drivers/misc/kdbus/endpoint.c
 create mode 100644 drivers/misc/kdbus/endpoint.h
 create mode 100644 drivers/misc/kdbus/handle.c
 create mode 100644 drivers/misc/kdbus/handle.h
 create mode 100644 drivers/misc/kdbus/item.c
 create mode 100644 drivers/misc/kdbus/item.h
 create mode 100644 drivers/misc/kdbus/limits.h
 create mode 100644 drivers/misc/kdbus/main.c
 create mode 100644 drivers/misc/kdbus/match.c
 create mode 100644 drivers/misc/kdbus/match.h
 create mode 100644 drivers/misc/kdbus/message.c
 create mode 100644 drivers/misc/kdbus/message.h
 create mode 100644 drivers/misc/kdbus/metadata.c
 create mode 100644 drivers/misc/kdbus/metadata.h
 create mode 100644 drivers/misc/kdbus/names.c
 create mode 100644 drivers/misc/kdbus/names.h
 create mode 100644 drivers/misc/kdbus/notify.c
 create mode 100644 drivers/misc/kdbus/notify.h
 create mode 100644 drivers/misc/kdbus/policy.c
 create mode 100644 drivers/misc/kdbus/policy.h
 create mode 100644 drivers/misc/kdbus/pool.c
 create mode 100644 drivers/misc/kdbus/pool.h
 create mode 100644 drivers/misc/kdbus/queue.c
 create mode 100644 drivers/misc/kdbus/queue.h
 create mode 100644 drivers/misc/kdbus/util.c
 create mode 100644 drivers/misc/kdbus/util.h
 create mode 100644 include/uapi/linux/kdbus.h
 create mode 100644 tools/testing/selftests/kdbus/.gitignore
 create mode 100644 tools/testing/selftests/kdbus/Makefile
 create mode 100644 tools/testing/selftests/kdbus/kdbus-enum.c
 create mode 100644 tools/testing/selftests/kdbus/kdbus-enum.h
 create mode 100644 tools/testing/selftests/kdbus/kdbus-test.c
 create mode 100644 tools/testing/selftests/kdbus/kdbus-test.h
 create mode 100644 tools/testing/selftests/kdbus/kdbus-util.c
 create mode 100644 tools/testing/selftests/kdbus/kdbus-util.h
 create mode 100644 tools/testing/selftests/kdbus/test-activator.c
 create mode 100644 tools/testing/selftests/kdbus/test-benchmark.c
 create mode 100644 tools/testing/selftests/kdbus/test-bus.c
 create mode 100644 tools/testing/selftests/kdbus/test-chat.c
 create mode 100644 tools/testing/selftests/kdbus/test-connection.c
 create mode 100644 tools/testing/selftests/kdbus/test-daemon.c
 create mode 100644 tools/testing/selftests/kdbus/test-domain.c
 create mode 100644 tools/testing/selftests/kdbus/test-endpoint.c
 create mode 100644 tools/testing/selftests/kdbus/test-fd.c
 create mode 100644 tools/testing/selftests/kdbus/test-free.c
 create mode 100644 tools/testing/selftests/kdbus/test-match.c
 create mode 100644 tools/testing/selftests/kdbus/test-message.c
 create mode 100644 tools/testing/selftests/kdbus/test-metadata-ns.c
 create mode 100644 tools/testing/selftests/kdbus/test-monitor.c
 create mode 100644 tools/testing/selftests/kdbus/test-names.c
 create mode 100644 tools/testing/selftests/kdbus/test-policy-ns.c
 create mode 100644 tools/testing/selftests/kdbus/test-policy-priv.c
 create mode 100644 tools/testing/selftests/kdbus/test-policy.c
 create mode 100644 tools/testing/selftests/kdbus/test-race.c
 create mode 100644 tools/testing/selftests/kdbus/test-sync.c
 create mode 100644 tools/testing/selftests/kdbus/test-timeout.c

-- 
2.1.0


^ permalink raw reply	[flat|nested] 104+ messages in thread
* [PATCH v2 00/13] Add kdbus implementation
@ 2014-11-21  5:02 Greg Kroah-Hartman
  2014-11-21  5:02 ` kdbus: add connection, queue handling and message validation code Greg Kroah-Hartman
  0 siblings, 1 reply; 104+ messages in thread
From: Greg Kroah-Hartman @ 2014-11-21  5:02 UTC (permalink / raw)
  To: arnd, ebiederm, gnomes, teg, jkosina, luto, linux-api, linux-kernel
  Cc: daniel, dh.herrmann, tixxdz

kdbus is a kernel-level IPC implementation that aims for resemblance to
the the protocol layer with the existing userspace D-Bus daemon while
enabling some features that couldn't be implemented before in userspace.

The documentation in the first patch in this series explains the
protocol and the API details.

This version has changed a lot since the first submission, based on the
review comments received, many thanks to everyone who took the time to
review the code and make suggestions.  Full details are below:

Reasons why this should be done in the kernel, instead of userspace as
it is currently done today include the following:

- performance: fewer process context switches, fewer copies, fewer
  syscalls, larger memory chunks via memfd.  This is really important
  for a whole class of userspace programs that are ported from other
  operating systems that are run on tiny ARM systems that rely on
  hundreds of thousands of messages passed at boot time, and at
  "critical" times in their user interaction loops.
- security: the peers which communicate do not have to trust each other,
  as the only trustworthy compoenent in the game is the kernel which
  adds metadata and ensures that all data passed as payload is either
  copied or sealed, so that the receiver can parse the data without
  having to protect against changing memory while parsing buffers.  Also,
  all the data transfer is controlled by the kernel, so that LSMs can
  track and control what is going on, without involving userspace.
  Because of the LSM issue, security people are much happier with this
  model than the current scheme of having to hook into dbus to mediate
  things.
- more metadata can be attached to messages than in userspace
- semantics for apps with heavy data payloads (media apps, for instance)
  with optinal priority message dequeuing, and global message ordering.
  Some "crazy" people are playing with using kdbus for audio data in the
  system.  I'm not saying that this is the best model for this, but
  until now, there wasn't any other way to do this without having to
  create custom "busses", one for each application library.
- being in the kernle closes a lot of races which can't be fixed with
  the current userspace solutions.  For example, with kdbus, there is a
  way a client can disconnect from a bus, but do so only if no further
  messages present in its queue, which is crucial for implementing
  race-free "exit-on-idle" services
- eavesdropping on the kernel level, so privileged users can hook into
  the message stream without hacking support for that into their
  userspace processes
- a number of smaller benefits: for example kdbus learned a way to peek
  full messages without dequeing them, which is really useful for
  logging metadata when handling bus-activation requests.

Of course, some of the bits above could be implemented in userspace
alone, for example with more sophisticated memory management APIs, but
this is usually done by losing out on the other details.  For example,
for many of the memory management APIs, it's hard to not require the
communicating peers to fully trust each other.  And we _really_ don't
want peers to have to trust each other.

Another benefit of having this in the kernel, rather than as a userspace
daemon, is that you can now easily use the bus from the initrd, or up to
the very end when the system shuts down.  On current userspace D-Bus,
this is not really possible, as this requires passing the bus instance
around between initrd and the "real" system.  Such a transition of all
fds also requires keeping full state of what has already been read from
the connection fds.  kdbus makes this much simpler, as we can change the
ownership of the bus, just by passing one fd over from one part to the
other.

Regarding binder: binder and kdbus follow very different design
concepts.  Binder implies the use of thread-pools to dispatch incoming
method calls.  This is a very efficient scheme, and completely natural
in programming languages like Java.  On most Linux programs, however,
there's a much stronger focus on central poll() loops that dispatch all
sources a program cares about.  kdbus is much more usable in such
environments, as it doesn't enforce a threading model, and it is happy
with serialized dispatching.  In fact, this major difference had an
effect on much of the design decisions: binder does not guarantee global
message ordering due to the parallel dispatching in the thread-pools,
but  kdbus does.  Moreover, there's also a difference in the way message
handling.  In kdbus, every message is basically taken and dispatched as
one blob, while in binder, continious connections to other peers are
created, which are then used to send messages on.  Hence, the models are
quite different, and they serve different needs.  I believe that the
D-Bus/kdbus model is more compatible and friendly with how Linux
programs are usually implemented.

This can also be found in a git tree, the kdbus branch of char-misc.git at:
        https://git.kernel.org/cgit/linux/kernel/git/gregkh/char-misc.git/

Changes since RFC v1:

  * Most notably, kdbus exposes its control files, buses and endpoints
    via an own file system now, called kdbusfs.

     * Each time a file system of this type is mounted, a new kdbus
       domain is created.

     * By default, kdbus is expected to be mounted in /sys/fs/kdbus

     * The layout inside each mount point is the same as before, except
       that domains are not hierarchically nested anymore.

     * Domains are therefore also unnamed now.

     * Unmounting a kdbusfs will automatically also destroy the
       associated domain.

     * Hence, the action of creating a kdbus domain is now as
       privileged as mounting a file system.

     * This way, we can get around creating dev nodes for everything,
       which is last but not least something that is not limited by
       20-bit minor numbers.

  * Rework the metadata attachment logic to address concerns raised by
    Andy Lutomirsky and Alan Cox:

     * Split the attach_flags in kdbus_cmd_hello into two parts,
       attach_flags_send and attach_flags_recv. Also, split the
       existing KDBUS_ITEM_ATTACH_FLAGS into
       KDBUS_ITEM_ATTACH_FLAGS_SEND and KDBUS_ITEM_ATTACH_FLAGS_RECV,
       and allow updating both connection details through
       KDBUS_CMD_CONN_UPDATE.

     * Only attach metadata to the final message in the receiver's pool
       if both the sender's attach_flags_send and the receiver's
       attach_flags_recv bit are set.

     * Add an optional metadata mask to the bus during its creation, so
       bus owners can denote their minimal requirements of metadata to
       be attached by connections of the bus.

  * Namespaces are now pinned by a domain at its creation time, and
    metadata items are automatically translated into these namespaces.
    Unless that cannot be done (currently only capabilities), in which
    case the items are dropped. For hide_pid enabled domains, drop all
    items except for such not revealing anything about the task.

  * Capabilities are now only checked at open() time, and the
    information is cached for the lifetime of a file descriptor.
    Reported by Eric W. Biederman, Andy Lutomirski and Thomas Gleixner.

  * Make functions that create new objects return the newly allocated
    memory directly, rather than in a referenced function arguments.
    That implies using ERR_PTR/PTR_ERR logic in many areas. Requested by
    Al Viro.

  * Rename two details in kdbus.h to not overload the term 'name' too
    much:

     KDBUS_ITEM_CONN_NAME	→ KDBUS_ITEM_CONN_DESCRIPTION
     KDBUS_ATTACH_CONN_NAME	→ KDBUS_ATTACH_CONN_DESCRIPTION

  * Documentation fixes, by Peter Meerwald and others.

  * Some memory leaks plugged, and another match test added, by
    Rui Miguel Silva

  * Per-user message count quota logic fixed, and new test added.
    By John de la Garza.

  * More test code for CONN_INFO ioctl

  * Added a kdbus_node object embedded by domains, endpoints and buses
    to track children in a generic way. A kdbus_node is always exposed
    as inode in kdbusfs.

  * Add a new attach flags constant called _KDBUS_ATTACH_ANY (~0)
    which automatically degrades to _KDBUS_ATTACH_ALL in the kernel.
    That way, old clients can opt-in for whethever newer kernels might
    offer to send.

  * Use #defines rather than an enum for the ioctl signatures, so when
    new ones are added, usespace can use #ifdeffery to determine the
    function set at compile time. Suggested by Arnd Bergmann.

  * Moved the driver to ipc/kdbus, as suggested by Arnd Bergmann.

Daniel Mack (13):
  kdbus: add documentation
  kdbus: add header file
  kdbus: add driver skeleton, ioctl entry points and utility functions
  kdbus: add connection pool implementation
  kdbus: add connection, queue handling and message validation code
  kdbus: add node and filesystem implementation
  kdbus: add code to gather metadata
  kdbus: add code for notifications and matches
  kdbus: add code for buses, domains and endpoints
  kdbus: add name registry implementation
  kdbus: add policy database implementation
  kdbus: add Makefile, Kconfig and MAINTAINERS entry
  kdbus: add selftests

 Documentation/ioctl/ioctl-number.txt             |    1 +
 Documentation/kdbus.txt                          | 1837 +++++++++++++++++++++
 MAINTAINERS                                      |   12 +
 include/uapi/linux/Kbuild                        |    1 +
 include/uapi/linux/kdbus.h                       |  933 +++++++++++
 include/uapi/linux/magic.h                       |    1 +
 init/Kconfig                                     |   12 +
 ipc/Makefile                                     |    2 +-
 ipc/kdbus/Makefile                               |   21 +
 ipc/kdbus/bus.c                                  |  459 ++++++
 ipc/kdbus/bus.h                                  |   98 ++
 ipc/kdbus/connection.c                           | 1838 ++++++++++++++++++++++
 ipc/kdbus/connection.h                           |  188 +++
 ipc/kdbus/domain.c                               |  349 ++++
 ipc/kdbus/domain.h                               |   84 +
 ipc/kdbus/endpoint.c                             |  497 ++++++
 ipc/kdbus/endpoint.h                             |   91 ++
 ipc/kdbus/fs.c                                   |  417 +++++
 ipc/kdbus/fs.h                                   |   22 +
 ipc/kdbus/handle.c                               |  993 ++++++++++++
 ipc/kdbus/handle.h                               |   20 +
 ipc/kdbus/item.c                                 |  258 +++
 ipc/kdbus/item.h                                 |   41 +
 ipc/kdbus/limits.h                               |   77 +
 ipc/kdbus/main.c                                 |   59 +
 ipc/kdbus/match.c                                |  524 ++++++
 ipc/kdbus/match.h                                |   31 +
 ipc/kdbus/message.c                              |  444 ++++++
 ipc/kdbus/message.h                              |   75 +
 ipc/kdbus/metadata.c                             |  698 ++++++++
 ipc/kdbus/metadata.h                             |   38 +
 ipc/kdbus/names.c                                |  921 +++++++++++
 ipc/kdbus/names.h                                |   81 +
 ipc/kdbus/node.c                                 |  872 ++++++++++
 ipc/kdbus/node.h                                 |   86 +
 ipc/kdbus/notify.c                               |  235 +++
 ipc/kdbus/notify.h                               |   29 +
 ipc/kdbus/policy.c                               |  629 ++++++++
 ipc/kdbus/policy.h                               |   61 +
 ipc/kdbus/pool.c                                 |  722 +++++++++
 ipc/kdbus/pool.h                                 |   44 +
 ipc/kdbus/queue.c                                |  608 +++++++
 ipc/kdbus/queue.h                                |   93 ++
 ipc/kdbus/util.c                                 |  166 ++
 ipc/kdbus/util.h                                 |  103 ++
 tools/testing/selftests/Makefile                 |    1 +
 tools/testing/selftests/kdbus/.gitignore         |   11 +
 tools/testing/selftests/kdbus/Makefile           |   45 +
 tools/testing/selftests/kdbus/kdbus-enum.c       |   94 ++
 tools/testing/selftests/kdbus/kdbus-enum.h       |   14 +
 tools/testing/selftests/kdbus/kdbus-test.c       |  546 +++++++
 tools/testing/selftests/kdbus/kdbus-test.h       |   81 +
 tools/testing/selftests/kdbus/kdbus-util.c       | 1240 +++++++++++++++
 tools/testing/selftests/kdbus/kdbus-util.h       |  143 ++
 tools/testing/selftests/kdbus/test-activator.c   |  317 ++++
 tools/testing/selftests/kdbus/test-benchmark.c   |  409 +++++
 tools/testing/selftests/kdbus/test-bus.c         |  130 ++
 tools/testing/selftests/kdbus/test-chat.c        |  123 ++
 tools/testing/selftests/kdbus/test-connection.c  |  501 ++++++
 tools/testing/selftests/kdbus/test-daemon.c      |   66 +
 tools/testing/selftests/kdbus/test-endpoint.c    |  221 +++
 tools/testing/selftests/kdbus/test-fd.c          |  664 ++++++++
 tools/testing/selftests/kdbus/test-free.c        |   34 +
 tools/testing/selftests/kdbus/test-match.c       |  437 +++++
 tools/testing/selftests/kdbus/test-message.c     |  371 +++++
 tools/testing/selftests/kdbus/test-metadata-ns.c |  258 +++
 tools/testing/selftests/kdbus/test-monitor.c     |  156 ++
 tools/testing/selftests/kdbus/test-names.c       |  184 +++
 tools/testing/selftests/kdbus/test-policy-ns.c   |  622 ++++++++
 tools/testing/selftests/kdbus/test-policy-priv.c | 1168 ++++++++++++++
 tools/testing/selftests/kdbus/test-policy.c      |   81 +
 tools/testing/selftests/kdbus/test-race.c        |  313 ++++
 tools/testing/selftests/kdbus/test-sync.c        |  241 +++
 tools/testing/selftests/kdbus/test-timeout.c     |   97 ++
 74 files changed, 23338 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/kdbus.txt
 create mode 100644 include/uapi/linux/kdbus.h
 create mode 100644 ipc/kdbus/Makefile
 create mode 100644 ipc/kdbus/bus.c
 create mode 100644 ipc/kdbus/bus.h
 create mode 100644 ipc/kdbus/connection.c
 create mode 100644 ipc/kdbus/connection.h
 create mode 100644 ipc/kdbus/domain.c
 create mode 100644 ipc/kdbus/domain.h
 create mode 100644 ipc/kdbus/endpoint.c
 create mode 100644 ipc/kdbus/endpoint.h
 create mode 100644 ipc/kdbus/fs.c
 create mode 100644 ipc/kdbus/fs.h
 create mode 100644 ipc/kdbus/handle.c
 create mode 100644 ipc/kdbus/handle.h
 create mode 100644 ipc/kdbus/item.c
 create mode 100644 ipc/kdbus/item.h
 create mode 100644 ipc/kdbus/limits.h
 create mode 100644 ipc/kdbus/main.c
 create mode 100644 ipc/kdbus/match.c
 create mode 100644 ipc/kdbus/match.h
 create mode 100644 ipc/kdbus/message.c
 create mode 100644 ipc/kdbus/message.h
 create mode 100644 ipc/kdbus/metadata.c
 create mode 100644 ipc/kdbus/metadata.h
 create mode 100644 ipc/kdbus/names.c
 create mode 100644 ipc/kdbus/names.h
 create mode 100644 ipc/kdbus/node.c
 create mode 100644 ipc/kdbus/node.h
 create mode 100644 ipc/kdbus/notify.c
 create mode 100644 ipc/kdbus/notify.h
 create mode 100644 ipc/kdbus/policy.c
 create mode 100644 ipc/kdbus/policy.h
 create mode 100644 ipc/kdbus/pool.c
 create mode 100644 ipc/kdbus/pool.h
 create mode 100644 ipc/kdbus/queue.c
 create mode 100644 ipc/kdbus/queue.h
 create mode 100644 ipc/kdbus/util.c
 create mode 100644 ipc/kdbus/util.h
 create mode 100644 tools/testing/selftests/kdbus/.gitignore
 create mode 100644 tools/testing/selftests/kdbus/Makefile
 create mode 100644 tools/testing/selftests/kdbus/kdbus-enum.c
 create mode 100644 tools/testing/selftests/kdbus/kdbus-enum.h
 create mode 100644 tools/testing/selftests/kdbus/kdbus-test.c
 create mode 100644 tools/testing/selftests/kdbus/kdbus-test.h
 create mode 100644 tools/testing/selftests/kdbus/kdbus-util.c
 create mode 100644 tools/testing/selftests/kdbus/kdbus-util.h
 create mode 100644 tools/testing/selftests/kdbus/test-activator.c
 create mode 100644 tools/testing/selftests/kdbus/test-benchmark.c
 create mode 100644 tools/testing/selftests/kdbus/test-bus.c
 create mode 100644 tools/testing/selftests/kdbus/test-chat.c
 create mode 100644 tools/testing/selftests/kdbus/test-connection.c
 create mode 100644 tools/testing/selftests/kdbus/test-daemon.c
 create mode 100644 tools/testing/selftests/kdbus/test-endpoint.c
 create mode 100644 tools/testing/selftests/kdbus/test-fd.c
 create mode 100644 tools/testing/selftests/kdbus/test-free.c
 create mode 100644 tools/testing/selftests/kdbus/test-match.c
 create mode 100644 tools/testing/selftests/kdbus/test-message.c
 create mode 100644 tools/testing/selftests/kdbus/test-metadata-ns.c
 create mode 100644 tools/testing/selftests/kdbus/test-monitor.c
 create mode 100644 tools/testing/selftests/kdbus/test-names.c
 create mode 100644 tools/testing/selftests/kdbus/test-policy-ns.c
 create mode 100644 tools/testing/selftests/kdbus/test-policy-priv.c
 create mode 100644 tools/testing/selftests/kdbus/test-policy.c
 create mode 100644 tools/testing/selftests/kdbus/test-race.c
 create mode 100644 tools/testing/selftests/kdbus/test-sync.c
 create mode 100644 tools/testing/selftests/kdbus/test-timeout.c


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

end of thread, other threads:[~2014-11-21  5:05 UTC | newest]

Thread overview: 104+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-29 22:00 [PATCH 00/12] Add kdbus implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add documentation Greg Kroah-Hartman
2014-10-30 12:20   ` Peter Meerwald
2014-11-02  1:29     ` Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add header file Greg Kroah-Hartman
2014-10-30  8:20   ` Arnd Bergmann
2014-10-30 11:02     ` Tom Gundersen
2014-10-30 11:26       ` Arnd Bergmann
2014-10-30 11:52         ` Daniel Mack
2014-10-30 12:03           ` Arnd Bergmann
2014-10-31 10:03             ` Daniel Mack
2014-10-29 22:00 ` kdbus: add driver skeleton, ioctl entry points and utility functions Greg Kroah-Hartman
2014-10-30  3:50   ` Eric W. Biederman
2014-10-30 23:45   ` Thomas Gleixner
2014-10-31  0:23     ` Jiri Kosina
2014-10-31  0:42       ` Thomas Gleixner
2014-10-29 22:00 ` kdbus: add connection pool implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add connection, queue handling and message validation code Greg Kroah-Hartman
     [not found]   ` <87k33iw759.fsf@x220.int.ebiederm.org>
2014-10-30  3:55     ` Andy Lutomirski
2014-10-30  9:06       ` Djalal Harouni
2014-10-29 22:00 ` kdbus: add code to gather metadata Greg Kroah-Hartman
2014-10-29 22:33   ` Andy Lutomirski
2014-10-30  0:13     ` Andy Lutomirski
2014-10-30  8:45       ` Daniel Mack
2014-10-30 14:07         ` Andy Lutomirski
2014-10-30 15:54           ` Daniel Mack
2014-10-30 21:01             ` Andy Lutomirski
2014-11-01 11:05               ` Daniel Mack
2014-11-01 16:19                 ` Andy Lutomirski
2014-11-03 12:00                   ` Simon McVittie
2014-11-03 17:05                     ` Andy Lutomirski
2014-10-30  8:09     ` Daniel Mack
2014-10-29 22:00 ` kdbus: add code for notifications and matches Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add code for buses, domains and endpoints Greg Kroah-Hartman
2014-10-30  3:59   ` Eric W. Biederman
2014-10-30  9:58     ` Djalal Harouni
2014-10-30 12:15       ` Eric W. Biederman
2014-10-30 14:48         ` Djalal Harouni
2014-10-30 14:58           ` Andy Lutomirski
2014-10-30 18:08             ` Djalal Harouni
2014-10-30 18:46               ` Simon McVittie
2014-11-05 19:59                 ` Djalal Harouni
2014-10-30 20:37               ` Andy Lutomirski
     [not found]                 ` <m2ublh$5h7$2@ger.gmane.org>
2014-10-30 22:00                   ` Andy Lutomirski
2014-10-30 23:38   ` How Not To Use kref (was Re: kdbus: add code for buses, domains and endpoints) Al Viro
2014-10-31 18:00     ` Linus Torvalds
2014-10-31 19:56       ` Al Viro
2014-11-04  9:11     ` David Herrmann
2014-10-31  1:39   ` kdbus: add code for buses, domains and endpoints Al Viro
2014-10-31  9:55     ` Daniel Mack
2014-10-29 22:00 ` kdbus: add name registry implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add policy database implementation Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add Makefile, Kconfig and MAINTAINERS entry Greg Kroah-Hartman
2014-10-29 22:00 ` kdbus: add selftests Greg Kroah-Hartman
2014-10-30  8:31   ` Arnd Bergmann
2014-11-14  3:42   ` Michael Ellerman
2014-11-14  8:56     ` Daniel Mack
2014-10-29 22:15 ` [PATCH 00/12] Add kdbus implementation Greg KH
2014-10-30  4:04   ` Eric W. Biederman
2014-10-30  7:12     ` Daniel Mack
2014-10-29 22:15 ` Andy Lutomirski
2014-10-29 22:27   ` Greg Kroah-Hartman
2014-10-29 22:34     ` Andy Lutomirski
2014-10-30  2:27     ` Andy Lutomirski
2014-10-30  4:20       ` Eric W. Biederman
2014-10-30 10:15         ` Tom Gundersen
2014-10-30 12:02           ` Eric W. Biederman
2014-10-30 13:48           ` Andy Lutomirski
2014-10-29 22:19 ` Andy Lutomirski
2014-10-29 22:25   ` Greg Kroah-Hartman
2014-10-29 22:28     ` Andy Lutomirski
2014-10-29 22:36       ` Andy Lutomirski
2014-10-30  7:44       ` Daniel Mack
2014-11-05 14:34   ` Daniel Mack
2014-10-29 23:00 ` Jiri Kosina
2014-10-29 23:11   ` Greg Kroah-Hartman
2014-10-29 23:12     ` Greg Kroah-Hartman
2014-10-29 23:24     ` Jiri Kosina
2014-10-29 23:26       ` Jiri Kosina
2014-10-29 23:34         ` Greg Kroah-Hartman
2014-10-29 23:40       ` Greg Kroah-Hartman
2014-10-29 23:55         ` Andy Lutomirski
2014-10-30 11:52           ` Tom Gundersen
2014-10-30 12:28             ` Simon McVittie
2014-10-30 13:59             ` Andy Lutomirski
2014-10-30 20:28               ` Alex Elsayed
2014-10-30  9:51         ` Karol Lewandowski
2014-10-30 10:44           ` Karol Lewandowski
2014-10-30 14:47             ` Greg Kroah-Hartman
2014-10-30 19:55               ` Karol Lewandowski
2014-10-30 20:24                 ` Greg Kroah-Hartman
2014-10-31 11:15                   ` Karol Lewandowski
2014-10-30 23:13                 ` One Thousand Gnomes
2014-10-31 10:58                   ` Karol Lewandowski
2014-10-30 23:39                 ` Paul Moore
2014-10-31 14:21                   ` Karol Lewandowski
     [not found]                     ` <1414773397-26490-1-git-send-email-k.lewandowsk@samsung.com>
     [not found]                       ` <20141107180120.GA15387@kroah.com>
2014-11-09  0:07                         ` [RFC PATCH 0/5] kdbus: add support for lsm Karol Lewandowski
     [not found]                       ` <1414773397-26490-2-git-send-email-k.lewandowsk@samsung.com>
2014-11-17  1:47                         ` [PATCH 1/5] kdbus: extend structures with security pointer " Karol Lewandowski
2014-11-17 18:37                           ` Greg KH
2014-11-02  1:21   ` [PATCH 00/12] Add kdbus implementation Greg Kroah-Hartman
2014-11-03 14:38     ` One Thousand Gnomes
2014-10-30  8:33 ` Arnd Bergmann
2014-10-30 16:17   ` Greg Kroah-Hartman
2014-11-21  5:02 [PATCH v2 00/13] " Greg Kroah-Hartman
2014-11-21  5:02 ` kdbus: add connection, queue handling and message validation code Greg Kroah-Hartman

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).