From da0252110cf04e570d558f3a8cfa30cc5741609d Mon Sep 17 00:00:00 2001 From: dongshengyuan <545258830@qq.com> Date: Thu, 25 Jun 2026 16:16:40 +0800 Subject: [PATCH 1/2] sysupdate: propagate transfer_instance_vacuum() errors Both vacuum loops silently return 0 on failure instead of propagating the error code, hiding disk cleanup failures from the caller. Signed-off-by: dongshengyuan --- src/sysupdate/sysupdate-transfer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sysupdate/sysupdate-transfer.c b/src/sysupdate/sysupdate-transfer.c index 4d698d620f..f7e257e041 100644 --- a/src/sysupdate/sysupdate-transfer.c +++ b/src/sysupdate/sysupdate-transfer.c @@ -838,7 +838,7 @@ int transfer_vacuum( r = transfer_instance_vacuum(t, instance); if (r < 0) - return 0; + return r; instance_free(instance); memmove(t->target.instances + i, t->target.instances + i + 1, (t->target.n_instances - i - 1) * sizeof(Instance*)); @@ -937,7 +937,7 @@ int transfer_vacuum( r = transfer_instance_vacuum(t, oldest); if (r < 0) - return 0; + return r; instance_free(oldest); memmove(t->target.instances + p, t->target.instances + p + 1, (t->target.n_instances - p - 1) * sizeof(Instance*)); From 32165a1a480402eb49a433eb15883624b2dd6cad Mon Sep 17 00:00:00 2001 From: dongshengyuan <545258830@qq.com> Date: Thu, 25 Jun 2026 16:19:14 +0800 Subject: [PATCH 2/2] network: roll back ipv6ll_address on link_ipv6ll_gained() failure If link_ipv6ll_gained() fails after ipv6ll_address is set, the address remains non-null and the null-guard in address_update() never triggers again, permanently suppressing SLAAC, DHCPv6 and RA on that link. Clear ipv6ll_address on the failure path so the guard can fire when the address is re-announced. Signed-off-by: dongshengyuan --- src/network/networkd-address.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 11337126e5..582069cf39 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -811,8 +811,10 @@ static int address_update(Address *address) { link->ipv6ll_address = address->in_addr.in6; r = link_ipv6ll_gained(link); - if (r < 0) + if (r < 0) { + link->ipv6ll_address = (const struct in6_addr) {}; return r; + } } if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))