[arch-commits] Commit in dbus-broker/trunk (2 files)
Jan Steffens
heftig at gemini.archlinux.org
Wed May 11 12:05:26 UTC 2022
Date: Wednesday, May 11, 2022 @ 12:05:26
Author: heftig
Revision: 444995
30-2: fix asserts
Added:
dbus-broker/trunk/0001-util-user-keep-reference-to-user-in-each-usage-table.patch
Modified:
dbus-broker/trunk/PKGBUILD
-----------------------------------------------------------------+
0001-util-user-keep-reference-to-user-in-each-usage-table.patch | 72 ++++++++++
PKGBUILD | 11 +
2 files changed, 80 insertions(+), 3 deletions(-)
Added: 0001-util-user-keep-reference-to-user-in-each-usage-table.patch
===================================================================
--- 0001-util-user-keep-reference-to-user-in-each-usage-table.patch (rev 0)
+++ 0001-util-user-keep-reference-to-user-in-each-usage-table.patch 2022-05-11 12:05:26 UTC (rev 444995)
@@ -0,0 +1,72 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: David Rheinsberg <david.rheinsberg at gmail.com>
+Date: Wed, 11 May 2022 08:41:48 +0200
+Subject: [PATCH] util/user: keep reference to user in each usage table
+
+Keep a reference to an owning user in each usage table. We want to allow
+callers to hold charges without holding on to any user references.
+
+Also fix the peer-deinitialization to be ordered correctly and free the
+user references last (in particular, after the charges). This is not
+strictly necessary, but now follows our coding style and would have
+avoided possible failures.
+
+This fixes an assertion failure when disconnecting entire groups of
+peers of the same user, due to the recent fix that actually made
+peer-accounting do something.
+
+Reported-by: Torge Matthies
+Reported-by: Mel34
+Signed-off-by: David Rheinsberg <david.rheinsberg at gmail.com>
+---
+ src/bus/peer.c | 2 +-
+ src/util/user.c | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/bus/peer.c b/src/bus/peer.c
+index 18bd1947ebc7..69ed0fde6933 100644
+--- a/src/bus/peer.c
++++ b/src/bus/peer.c
+@@ -358,12 +358,12 @@ Peer *peer_free(Peer *peer) {
+ name_owner_deinit(&peer->owned_names);
+ policy_snapshot_free(peer->policy);
+ connection_deinit(&peer->connection);
+- user_unref(peer->user);
+ user_charge_deinit(&peer->charges[2]);
+ user_charge_deinit(&peer->charges[1]);
+ user_charge_deinit(&peer->charges[0]);
+ free(peer->seclabel);
+ free(peer->gids);
++ user_unref(peer->user);
+ free(peer);
+
+ close(fd);
+diff --git a/src/util/user.c b/src/util/user.c
+index 7856b768e91e..d0edb5e83210 100644
+--- a/src/util/user.c
++++ b/src/util/user.c
+@@ -48,22 +48,23 @@ static int user_usage_new(UserUsage **usagep, User *user, uid_t uid) {
+ return error_origin(-ENOMEM);
+
+ usage->n_refs = REF_INIT;
+- usage->user = user;
++ usage->user = user_ref(user);
+ usage->uid = uid;
+ usage->user_node = (CRBNode)C_RBNODE_INIT(usage->user_node);
+
+ *usagep = usage;
+ return 0;
+ }
+
+ static void user_usage_free(_Atomic unsigned long *n_refs, void *userdata) {
+ UserUsage *usage = c_container_of(n_refs, UserUsage, n_refs);
+ size_t i;
+
+ for (i = 0; i < usage->user->registry->n_slots; ++i)
+ c_assert(!usage->slots[i]);
+
+ user_usage_unlink(usage);
++ user_unref(usage->user);
+ free(usage);
+ }
+
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2022-05-11 08:00:53 UTC (rev 444994)
+++ PKGBUILD 2022-05-11 12:05:26 UTC (rev 444995)
@@ -3,7 +3,7 @@
pkgname=dbus-broker
pkgver=30
-pkgrel=1
+pkgrel=2
pkgdesc="Linux D-Bus Message Broker"
url="https://github.com/bus1/dbus-broker/wiki"
arch=(x86_64)
@@ -11,11 +11,16 @@
depends=(systemd-libs expat audit)
makedepends=(meson systemd python-docutils)
options=(debug)
-source=(https://github.com/bus1/dbus-broker/releases/download/v$pkgver/$pkgname-$pkgver.tar.xz)
-sha256sums=('bf22ba6a13680ba93b99f0bccb54dde9f4f6bdff5f298dbc8cdb067a80f3827a')
+source=(https://github.com/bus1/dbus-broker/releases/download/v$pkgver/$pkgname-$pkgver.tar.xz
+ 0001-util-user-keep-reference-to-user-in-each-usage-table.patch)
+sha256sums=('bf22ba6a13680ba93b99f0bccb54dde9f4f6bdff5f298dbc8cdb067a80f3827a'
+ 'e7107b54a0051e3945cfde3a8cfc617abcef63b38dd0c5783ba805fedab9e2d1')
prepare() {
cd $pkgname-$pkgver
+
+ # Fix asserts in system bus
+ patch -Np1 -i ../0001-util-user-keep-reference-to-user-in-each-usage-table.patch
}
build() {
More information about the arch-commits
mailing list