From: Heran Yang Date: Fri, 16 Jan 2026 12:27:19 +0000 (+0800) Subject: core/unit: re-find dropin paths of a unit after writting settings X-Git-Tag: v260-rc1~375 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c55aadc13e1ec0b1772ff927994a75601864ec09;p=thirdparty%2Fsystemd.git core/unit: re-find dropin paths of a unit after writting settings Fixes: ab932a622d57 ("core: simplify unit_need_daemon_reload() a bit") Fixes #35710 Co-authored-by: Jian Wen --- diff --git a/src/core/unit.c b/src/core/unit.c index 5494d718e65..535839e15c4 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -4748,12 +4748,11 @@ int unit_write_setting(Unit *u, UnitWriteFlags flags, const char *name, const ch if (r < 0) return r; - r = strv_push(&u->dropin_paths, q); + _cleanup_strv_free_ char **dropins = NULL; + r = unit_find_dropin_paths(u, /* use_unit_path_cache= */ true, &dropins); if (r < 0) return r; - q = NULL; - - strv_uniq(u->dropin_paths); + strv_free_and_replace(u->dropin_paths, dropins); u->dropin_mtime = now(CLOCK_REALTIME); diff --git a/test/units/TEST-15-DROPIN.sh b/test/units/TEST-15-DROPIN.sh index dd850f41e1f..e056786910d 100755 --- a/test/units/TEST-15-DROPIN.sh +++ b/test/units/TEST-15-DROPIN.sh @@ -712,6 +712,17 @@ EOF clear_units test15-a.service } +testcase_order_dropin_paths_set_property() { + # For issue #35710. + echo "Testing the order of dropin paths that are created by set-property" + + create_service test15-a + systemctl set-property test15-a DevicePolicy=strict DeviceAllow="char-* m" + check_ok test15-a NeedDaemonReload no + + clear_units test15-a.service +} + run_testcases touch /testok