Messages in this thread | | | Date | Mon, 6 Jul 2015 20:40:29 +0200 | Subject | [GIT PULL] kdbus updates for Greg | From | David Herrmann <> |
| |
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.
Thanks David
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: http://www.spinics.net/lists/netdev/msg329322.html 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(-)
| |