[GIT PULL] kdbus updates for Greg

From: David Herrmann
Date: Mon Jul 06 2015 - 14:40:35 EST

Hi Greg

Big set of updates for kdbus. I picked up all remaining cleanups and
fixes from the ML and added my performance rework. Features are
described below. All tested for several weeks as part of the
out-of-tree repo.


The following changes since commit 337faaf05f04521a1546e652626e7f386f598193:

Merge 4.1 into branch 'kdbus' (2015-06-26 15:54:26 -0700)

are available in the git repository at:

https://github.com/systemd/linux.git tags/for-greg

for you to fetch changes up to c61382ef278eb8569c87e4be3077f3f9f1f2fc49:

kdbus: allow match rules on msg->dst_id (2015-07-06 18:15:21 +0200)

kdbus updates for Greg

* Drop unused features. This includes KDBUS_MSG_MAX_ITEMS, required attach
flags on buses and filtering oneself on broadcasts. Those were all unused
and I haven't seen any code using them now. As there is no need for them,
drop support for them.
We do _not_ break ABI, so old code still works. But we lack support for
those features now. If anything turns up, we might have to revert these.
But I really doubt that.

* Namespaces are now pinned on kdbus_conn. This was triggered by a discussion
with Eric regarding UDS on LKML:
We now follow the suggestion of Eric and pin namespaces. See the commit
message of c2bc012ac7da4 for details.

* Full rewrite of the message importer (parsing user-passed message and
prep'ing it before copying into the target pool). This was done to reduce
the number of calls into shmem, as those showed up a lot on benchmarks.
This rewrite makes up most of this PR and reduces overhead of message
transactions by roughly 40%. More optimizations are underway.

* We now support MATCH rules on the destination ID. This is supported by dbus1
but we never really needed it. But as it turns out, the bus-proxy now needs
it to support unicast-signal-compatibility with dbus1.

* We now extended the metadata retrieval to support the discussed /proc-style
access restrictions. This basically makes sure that we only transmit
metadata that was explicitly allowed by the sender, or which the receiver
has _actual_ access to via procfs of its own pid-namespace.

* Miscellaneous fixes and cleanups (from mailing-list and myself).

David Herrmann (29):
kdbus/selftests: fix CAP translation tests
kdbus: drop redundant KDBUS_MSG_MAX_ITEMS
kdbus: drop unused 'bloom_generation' field
kdbus: drop support for required attach-flags on buses
kdbus: pin namespaces on HELLO
kdbus: fix NULL-deref in activator cleanup
kdbus: allow building development modules
kdbus: split off faked metadata into separate object
kdbus: pin 'struct cred' in process metadata
kdbus: pass msg-seqnum directly into meta-conn
kdbus: don't include padding in mc->owned_names_size
kdbus: re-introduce metadata buffers
kdbus: speed up KDBUS_CMD_*_INFO by using meta_emit()
kdbus: simplify kdbus_match_rules()
kdbus: pass notification details directly into policy wrapper
kdbus: pass source connection to queue handling
kdbus: remove redundant kmsg->dst_name_id
kdbus: simplify collecting metadata on messages
kdbus: simplify notification shortcuts
kdbus: rewrite message importer
kdbus: remove unused code
kdbus: import messages via kdbus_args
kdbus: switch to kdbus_staging
kdbus: drop unused metadata code
kdbus: drop unused message handling
kdbus: allow senders to receive own broadcasts
kdbus: pass metadata which a receiver could read via /proc
kdbus: drop redundant ns pointers
kdbus: allow match rules on msg->dst_id

Markus Elfring (1):
kdbus: delete unnecessary check before kdbus_domain_unref

Sergei Zviagintsev (2):
kdbus: fix typos in kdbus_conn_quota_inc()
kdbus: use standard kernel types in struct kdbus_quota

Documentation/kdbus/kdbus.bus.xml | 15 -
Documentation/kdbus/kdbus.connection.xml | 8 +-
include/uapi/linux/kdbus.h | 1 +
ipc/kdbus/Makefile | 15 +-
ipc/kdbus/bus.c | 94 +-
ipc/kdbus/bus.h | 8 +-
ipc/kdbus/connection.c | 335 +++---
ipc/kdbus/connection.h | 22 +-
ipc/kdbus/fs.c | 4 +-
ipc/kdbus/handle.c | 15 +-
ipc/kdbus/handle.h | 17 +-
ipc/kdbus/item.c | 42 +-
ipc/kdbus/item.h | 3 -
ipc/kdbus/limits.h | 3 -
ipc/kdbus/match.c | 153 ++-
ipc/kdbus/match.h | 8 +-
ipc/kdbus/message.c | 1258 ++++++++++++++--------
ipc/kdbus/message.h | 181 ++--
ipc/kdbus/metadata.c | 1086 +++++++++++--------
ipc/kdbus/metadata.h | 67 +-
ipc/kdbus/names.c | 2 +-
ipc/kdbus/notify.c | 132 +--
ipc/kdbus/queue.c | 359 +-----
ipc/kdbus/queue.h | 42 +-
tools/testing/selftests/kdbus/kdbus-test.c | 1 -
tools/testing/selftests/kdbus/kdbus-util.c | 20 +-
tools/testing/selftests/kdbus/kdbus-util.h | 3 +-
tools/testing/selftests/kdbus/test-connection.c | 9 -
tools/testing/selftests/kdbus/test-message.c | 9 +-
tools/testing/selftests/kdbus/test-metadata-ns.c | 9 +-
tools/testing/selftests/kdbus/test-policy-priv.c | 26 +-
31 files changed, 2048 insertions(+), 1899 deletions(-)
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/