1
0
mirror of https://github.com/systemd/systemd.git synced 2025-02-04 21:47:31 +03:00

homed: fix return value mix-up

We generally return > 1 if any of the actions we are doing is instantly
complete and == 0 when we started doing it asynchronously (by forking
off homework), in our functions that execute operations on homes.

Fix a mix-up where the test for this was reversed in
home_dispatch_release() and home_dispatch_lock_all().

Fixes: #15684
This commit is contained in:
Lennart Poettering 2020-05-20 19:55:39 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent b10ceb4783
commit a60416f319

View File

@ -2364,7 +2364,7 @@ static int home_dispatch_release(Home *h, Operation *o) {
case HOME_UNFIXATED:
case HOME_ABSENT:
case HOME_INACTIVE:
r = 0; /* done */
r = 1; /* done */
break;
case HOME_LOCKED:
@ -2384,7 +2384,7 @@ static int home_dispatch_release(Home *h, Operation *o) {
assert(!h->current_operation);
if (r <= 0) /* failure or completed */
if (r != 0) /* failure or completed */
operation_result(o, r, &error);
else /* ongoing */
h->current_operation = operation_ref(o);
@ -2406,12 +2406,12 @@ static int home_dispatch_lock_all(Home *h, Operation *o) {
case HOME_ABSENT:
case HOME_INACTIVE:
log_info("Home %s is not active, no locking necessary.", h->user_name);
r = 0; /* done */
r = 1; /* done */
break;
case HOME_LOCKED:
log_info("Home %s is already locked.", h->user_name);
r = 0; /* done */
r = 1; /* done */
break;
case HOME_ACTIVE: