From nobody Sun Apr 5 13:04:58 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 395AF2C324D for ; Tue, 24 Mar 2026 18:03:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774375396; cv=none; b=feLeZq9xxmq8lZsMciBpWwwveQQ0gKXLATpFSXqAX05iJVNG2yicag6+MhoD71HrwHe8wRm9vzw5fUCjyjAiJNtOS8sC0lym+jRS01S42sQJEWZ3hVMnrtA+AERyBpGeIaELElDvQ5S3TmZVnZL/MDAlhcfkVS6/ZmfQjFb4uJM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774375396; c=relaxed/simple; bh=4MwI/roZPxfX0S7ceDw69F6AuQqaCKsoJglHMoZJhlI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ie+j3SBbsX3dW3ide4aAYQKOoyS1Cqvz0HiPvJPniANiIoagcYnzzull+3MEVghiTIsek68J+ba3JgLnvCYW9v5dXRCXWUL345/Mc50n/eZRUNMHnr9eKbwQK1fsuffY45WlfkE4TE6hc5uS+h5PDUoyQrXMbZvzu+FDwIkkE1s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=oahnIyNG; arc=none smtp.client-ip=209.85.216.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="oahnIyNG" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-35bb9070644so2636095a91.2 for ; Tue, 24 Mar 2026 11:03:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774375394; x=1774980194; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SG8qLlFK9Bv9IOjifKCoHNCffCe/58yR1iKkvJU9MpA=; b=oahnIyNGvyenlCV9xxDoUsGSpWNX2pfb+7UwvJl4glaKKgkOTngLovXI8PujZspkEQ zkmwMAmihfYrVfeWZnJKnnMLFvp2c4fCZhYyMFHAvw6Y0F925lJU6iQDbDX9tqodHd4E tBCKnXzBLOZ7+uKxXd/IhBIK0ThQqK38MJcnrKAUkO6/TK7ZW0CdySMFny63e1orMD7r KDs/KvG+9x3hwasofEU4pwp3DFZbI1kJoNrQvuQZY1wVF/Tm013mBS1bE3LRgO+z+IUW q8VXISOB54OEmLTXiWb4wVyI2nWjIbd2GkH+PPa6undoEOUvB1PhdqoOXm0tw3fL/i0V GypA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774375394; x=1774980194; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=SG8qLlFK9Bv9IOjifKCoHNCffCe/58yR1iKkvJU9MpA=; b=GAIvTWiLbO5jmxfiN2IMhw6xM5ATRc8/EC/wekov2Ql/SMt82rQlsFkL98+eMlavUQ DTpOM2uaIDalGGLhuyA7vwRI6iM+H4MApP3cpt1mRPYSxYg4anj0dVQBEyhig3e935d4 m5OyyH7ZoG11DglnMLH2yvl0zmuQBSeWWIsJfNUzUIhbN+UlsXw31pH4sYAf8zyljQBf mHNluK8kK7D1fo2ehjQDHJfEHebYkP+JBO3CY7YtT9w6YaCOdAO0i0LFW3Fkdzb6QX+b ZXKJXBBpM8PLfK6iv7NU4gkIeyEzrEsYZpiJFI390IAnG+v6mEtR82i7ufGIOzPcPRZ8 pQrw== X-Forwarded-Encrypted: i=1; AJvYcCUi7kCZi2t+7qHsNcIluErF9gxL8WzTWO9eGYFcCgdXhM2H81o+IGLtHR8wS6nEwUm0pbKtcdRQVaCDsOU=@vger.kernel.org X-Gm-Message-State: AOJu0YycyKgQ9cUhwMPQnEG7jhTII/c1Ho6wREGsrsgBx9MEpY/wrU0H bD1oxDEIGjBYCzwHdYnv/SvxZdUFx/Cqf6a4I4x88Z//qc0mUV6guw+7sJ7Adlb8L+8= X-Gm-Gg: ATEYQzyeyUifMJlYgAmK55CfdPxdyz2d6wGtAe3Maoi2YA1IhOU5F4+S75m4Ox9MZJi hSNyZWx2FhrZjjjhFU6S/jE6vPJFymPTbbdDxCjKXPoJ0HNVscU78pQpKfLu059hr1Ln/SRz7oY 3s2vyytBxMSSwj92/2uHWGSbsl3zBsR3TSF7EZC11nfe5vcx2Qv2wXhFyor+uj2qmQmLl+UeFFc Safs4bstZMk+1mOF2u0t6397wkLQRd1p9y5zmqbsg13aSVG1uXneAGTStIlM9S7L0+MPtqz9/2t sK5YbyRJStQmwmzFWYexTJjk7D5g74Wi4En2Y/5W4YCe1TYKEiM6SXijaVYUtp29GmDBR7NHvX/ ug5zO7+GPgWU1JrqifIoeD7FlDiKacLf0yxVekQqVrqt7yJtvg9+sf23Dn69O9HuAOeJDeUA2jF 7AiCysJH/EXaM+7w7u2wgkI+GcTpfkUcNEvfDb7dqhp6M= X-Received: by 2002:a17:90b:4c8e:b0:35b:b907:370 with SMTP id 98e67ed59e1d1-35c0db6f0c1mr383431a91.0.1774375393493; Tue, 24 Mar 2026 11:03:13 -0700 (PDT) Received: from ArchDesktopLeo ([2400:a840:5c41:0:e012:ea6c:986:40a8]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35c03124a94sm3179079a91.2.2026.03.24.11.03.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Mar 2026 11:03:13 -0700 (PDT) From: Leo Timmins To: Pasha Tatashin , Mike Rapoport Cc: Pratyush Yadav , Andrew Morton , linux-kernel@vger.kernel.org, Leo Timmins Subject: [PATCH 1/3] liveupdate: propagate file deserialization failures Date: Wed, 25 Mar 2026 02:02:56 +0800 Message-ID: <20260324180258.1282560-2-leotimmins1974@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260324180258.1282560-1-leotimmins1974@gmail.com> References: <20260324180258.1282560-1-leotimmins1974@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" luo_session_deserialize() ignored the return value from luo_file_deserialize(). As a result, a session could be left partially restored even though the /dev/liveupdate open path treats deserialization failures as fatal. Propagate the error so a failed file deserialization aborts session deserialization instead of silently continuing. Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preserva= tion") Signed-off-by: Leo Timmins --- kernel/liveupdate/luo_session.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_sessio= n.c index 783677295640..25ae704d7787 100644 --- a/kernel/liveupdate/luo_session.c +++ b/kernel/liveupdate/luo_session.c @@ -558,8 +558,13 @@ int luo_session_deserialize(void) } =20 scoped_guard(mutex, &session->mutex) { - luo_file_deserialize(&session->file_set, - &sh->ser[i].file_set_ser); + err =3D luo_file_deserialize(&session->file_set, + &sh->ser[i].file_set_ser); + } + if (err) { + pr_warn("Failed to deserialize files for session [%s] %pe\n", + session->name, ERR_PTR(err)); + return err; } } =20 --=20 2.53.0 From nobody Sun Apr 5 13:04:58 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C291142050 for ; Tue, 24 Mar 2026 18:03:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774375400; cv=none; b=Q98+0SYLOfSldgQ1i7hLAB7+uM6PHgjG1jleA5Le/9ervWxwyLY3vrwcB1suu+n7RtlIZs/yTDK2tDmdDMiZA1C+FERktp3/GvNeeFjrQR+vMeiXRQ/KopJoxb31YneH3Rwh6aUDpj92ZxmbP2jUcCJR3eUp1fX+vYFRfgns514= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774375400; c=relaxed/simple; bh=xarzotv2pS5bvC40vvae5JYnkPlQQjzJd5Q+5QwdXNs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DHR0tMdiFZe4WEwMpxfs4bIil0UmWHVwKRxGcJqTNSx/50lPDBcz4IxiuelBDK6DU1jnFVseAlQPTATBgLGBNDPgTsgAKW2Ozcyeahk+TH0InsHeWBTh+g0m9sADmbx8GEr2zyzADmn58Avx71noIeHIiURfv+b2WE+8k1MNau0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Debn2pmW; arc=none smtp.client-ip=209.85.216.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Debn2pmW" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-3590042fa8eso3712287a91.1 for ; Tue, 24 Mar 2026 11:03:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774375399; x=1774980199; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JblQKHB4m9kg6NYLv31NpxpC7SBbLjv5pn+enlC7Y7o=; b=Debn2pmW2FpfqGQ5qGSvsLZ4SlOEJij1NuEQI5yi804k3D9rNchZufpYfx6VSr+fqj LXfD5Rui0EC5UO9uIPXroOOW6vtjpO2jEZBtfQwa+CMN6scK9F4LKIkyaSRdY09rvqzv xm2kc9yjDKmZw17G+8I7X2yiPCCiIdshiwQmaUt+mXYUzN9ervOHMmHlu+Xl+wpUdisC iQtZoLBGz3h5XVricRVQl/8r0/TeoznmqdRkoWHVSxZx2LQnOLRTEr/2Z+UFA+yswex2 0CsqPAr4neLvKmAyK/y3RcYJfkPkWO/oIIeFVc9jw4g3cW2MZoiXUMoKn5ZqtTELGSts eetA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774375399; x=1774980199; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JblQKHB4m9kg6NYLv31NpxpC7SBbLjv5pn+enlC7Y7o=; b=KfE/R94DkXo3H0+iJ43kqa4NeeOgvJXDFhFkouL25WXxMOyMESe1KCreRMhUjVaxz3 FmL+XBv/Tgv3y+In3fxFLjgx9/ZOOglszUIGdF4LDIhFZYIf2v1UqFB28kBrOdztXSiG iq8RfpPsflYJYQoOuCZsNmbeWU4OFU/Umv2tjXTN5dVZtMatOEOfdp48S9vVLl8uqrot XaxqqRbGXvTSpQOxWAxLRgHQZZf5RyqGXbv/ES2IliZr7L0Kahe/8YUNcEnI3wIvwAEB 8B8u8hSV6TEvpVt8+wKfFPxYcz9tEGU/QGBIQWR2cyOw+uOzVbMxtwHVvEOVOtaBMsQR bs2A== X-Forwarded-Encrypted: i=1; AJvYcCWBaMYbkUl7zHhuMIaknxhf5d/dCXy5SKazdsgGMJer75IxPKA0UkkshrLxvEuN6UZOQPFnZ84OAesUpKQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyXCj2cIYvWLNUDLAyf6+cn6aohNz07d+jWNtKa5e7CX8C7vv21 Y6nd8MdNe+Z7rIWyj32B0bCf+EBm2MhX9vuepEH1tX0m6R8i66zMKi+oW8G1cn98KZk= X-Gm-Gg: ATEYQzymDF3QZlfpAKqqGNUNCzYTWoHMOLy088CjDiFmGqqN6p4/JxjRkuw8lhV6pwQ MKDGqcq+APPrIe6LnSBXLlHUft4Dj14iTTYxksfXu2IamaXP3stqWl+R3WX5TIA3nIEkUBus+Zr TysI8kcfoB/9KNaBYIVRrnoxwTu3bqFqp4SZHR91cE7AghaqqJpfcuB46/FwQv/UXI1GzrunTQp hvNrwApnVWRUNooF5PJ00LjauOisr/Ck744OLDZlD6TgjwE3kH6DMlxMDwQNe80ePnOdY88Rcka iyQrjej1t/imNawO6Guj/h6QT843/2m2ADXV+QWThGN+xYmYt/nnRqqBXz7PEOVpGuBxPTD0Kq1 5RvWbmEh1TQF6M2pIvWbmRkdzGhLuTelu3Cpp+nHsdZmvq4SlbKKMLEcaxtX2e1wwgO8C4+1GIY eQ1/7uQQH4NbyGSaTiq6kuBiO5PK6KkZRC X-Received: by 2002:a17:90b:5646:b0:35b:a656:a614 with SMTP id 98e67ed59e1d1-35c0ddb20famr247619a91.21.1774375398173; Tue, 24 Mar 2026 11:03:18 -0700 (PDT) Received: from ArchDesktopLeo ([2400:a840:5c41:0:e012:ea6c:986:40a8]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35c03124a94sm3179079a91.2.2026.03.24.11.03.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Mar 2026 11:03:17 -0700 (PDT) From: Leo Timmins To: Pasha Tatashin , Mike Rapoport Cc: Pratyush Yadav , Andrew Morton , linux-kernel@vger.kernel.org, Leo Timmins Subject: [PATCH 2/3] liveupdate: keep sessions retrievable after release failures Date: Wed, 25 Mar 2026 02:02:57 +0800 Message-ID: <20260324180258.1282560-3-leotimmins1974@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260324180258.1282560-1-leotimmins1974@gmail.com> References: <20260324180258.1282560-1-leotimmins1974@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When automatic finish-on-release fails for an incoming session, luo_session_release() cannot report that error back through close(). The VFS ignores ->release() return values during __fput(). Returning with session->retrieved still set leaves the session on the incoming list but impossible to retrieve again after the file descriptor is gone. Clear the retrieved flag so userspace can reopen the session and retry finishing it later. Fixes: 16cec0d26521 ("liveupdate: luo_session: add ioctls for file preserva= tion") Signed-off-by: Leo Timmins --- kernel/liveupdate/luo_session.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_sessio= n.c index 25ae704d7787..7016d96ee960 100644 --- a/kernel/liveupdate/luo_session.c +++ b/kernel/liveupdate/luo_session.c @@ -210,9 +210,11 @@ static int luo_session_release(struct inode *inodep, s= truct file *filep) int err =3D luo_session_finish_one(session); =20 if (err) { + scoped_guard(mutex, &session->mutex) + session->retrieved =3D false; pr_warn("Unable to finish session [%s] on release\n", session->name); - return err; + return 0; } sh =3D &luo_session_global.incoming; } else { --=20 2.53.0 From nobody Sun Apr 5 13:04:58 2026 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E1BD442050 for ; Tue, 24 Mar 2026 18:03:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774375405; cv=none; b=OS/By+ELvy/TrFUe6ylP2plN58s1QucQuC4hEQ799IW2enQccZYgkPJBWzVEAJITt991uVxukSpx7SiDl/V7iYYgwIEXKtpESZlHylh9z2mryn/AtlbXr4MiQhu4MOR8cDibCJ+TwbiiAllkn+9Nri5+g15RI+papd2orV9FwPc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774375405; c=relaxed/simple; bh=FYrrfu8NUb3hdqDI87e8nxqxEBFUBEO9zOcqIuWCG80=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ro1ttsPu9u/jwP2DCGyI7kpH1xSMs4jBzwMrz7cKY1Lwf+9/cgGodR09hLZLgnW91JhjhWe5pWu0Rjej+DI2ln91yNilegCFx2Crhe9CeG2xAGMalBuH3VJiIvj+D1/PS38kaRMFrbYCxnw+DiwgTm4q0ggUbNHrig4bR7mmWno= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FAePJU1w; arc=none smtp.client-ip=209.85.216.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FAePJU1w" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-354bc7c2c46so2778723a91.0 for ; Tue, 24 Mar 2026 11:03:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774375403; x=1774980203; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Rhbz2of6+Xe2Zo/07pNkzuZohlohkmzeKfJt3hElN40=; b=FAePJU1wwEYJEyMWqgUWD/9kNX1HX8v3dxJDanAZRoqA5gGBdTOwW6k6aQ6ag6Y9We 7sG/zZe76WckAfIbQ9TY/NLXyrwaWGUxlRInEAAkXj6h7QIOlzNfFWUsWoQs8gs6G3eJ rMp7uUhUM0vLLSOTHF5IL+U75OkVB8ASkH8ToIz3Vk/RLCe+5PltcWdWiDp/8WsXcH8+ 14ldk0gZ674BXxum25SHRS3I3A0Hf/1SCayDM9zUT84wGICq4BBWG32AJDnoPKRWUJCi P0N4noiPcP8JgSixa1Jd/7Xyk7rKSqx+FvtTq3Q+XH0zWXPiddehKZ32aJEoqzWWmmYc loqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774375403; x=1774980203; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Rhbz2of6+Xe2Zo/07pNkzuZohlohkmzeKfJt3hElN40=; b=iaxIT05j2MATiDc/spsWaqOhotnFu7DpAQmtRMNPwFAMrns3V4gjGbh80ij/MEFr4X Myx5h9b3Drh7Tbfs03NVYCdeZXH66ZovOiUdmzfUUw53EWAgiFfAOiH86QulgayNZ7+W iVNxX3p1t1izFOjTqiACo1X5RfkRAzX0LGDoRsL8Sf0AOeltTtKzTRbm9fjSQurC1aHi WrbO8eY1psz1zeegPnH/t+q3wF42jZnTfjwTKvpampLfQDzKoCabxeZ5l2GKW4ZVbFwM lMjwjXu+9gEiBCncDsG5byEeyKyDo+/7JD9G2EGmwzvVdSKV5IRy/gP7EhTLnFuUePwT CzNg== X-Forwarded-Encrypted: i=1; AJvYcCUaMiPnQ7tMTiqBWEwVP5mEFiSt96jdKiOIGnt5ovtnH3k0kZdbC9SLX2VhN6jXjvqy3zkiPBEHby28C6Y=@vger.kernel.org X-Gm-Message-State: AOJu0YzpoU/gKJ3p1ywvqgDyCwtUQpu7nOiFToWiq9+wZCWR0018jUiU s+uvjr2AygsVl6aSQ6CfnrzR6egznA4g7QWKu09Bv4m6PGrGn4d4w6vb X-Gm-Gg: ATEYQzyp9d0k+nexwPXmFnWq9+SXD+TEEp5I4mye5XQsnz2MSU+6fgppD9lq7u52nez e1Nkpki1cM91zBbKNGmDOksRYSKUMOJwAQ/yX3e/SSma/yAPCLkjDZfbVhBmfNVCEviZV8SG3Hq F3hX0chl4HJsZ/fYnAIBfsrFaN+NxdcwsVkqvwZTLX0KJARUwGmBYyhqGzYyveTTo643agEXXi6 rBF1HevPwy1PcFCn5abJ9mO7bY6ryMM6DK6uHQVogw53lxCFqR9wV5DoUdM5GK4ve3phzf9SFmT 1AT4F5i6qCQUO6XzzYgowkpsRqyLFyCiMh3xJCfOWZBIh20YlduLS52fAQUE+Gf3rdQrGRzD/9T Bh5MVQKwcW7DHMIbUacirLwVfz68q5RumWY25lNeO/ccGNJlfuRkTr6lJKdT4gLvLYsczfjZsy4 pf/SnrI+7meavUaUEVnr2YlW9/ZGG2ylX6 X-Received: by 2002:a17:90a:e7d1:b0:359:83d3:27d3 with SMTP id 98e67ed59e1d1-35c0dc84216mr292653a91.2.1774375401923; Tue, 24 Mar 2026 11:03:21 -0700 (PDT) Received: from ArchDesktopLeo ([2400:a840:5c41:0:e012:ea6c:986:40a8]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35c03124a94sm3179079a91.2.2026.03.24.11.03.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Mar 2026 11:03:21 -0700 (PDT) From: Leo Timmins To: Pasha Tatashin , Mike Rapoport Cc: Pratyush Yadav , Andrew Morton , linux-kernel@vger.kernel.org, Leo Timmins Subject: [PATCH 3/3] liveupdate: initialize incoming FLB state before finish Date: Wed, 25 Mar 2026 02:02:58 +0800 Message-ID: <20260324180258.1282560-4-leotimmins1974@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260324180258.1282560-1-leotimmins1974@gmail.com> References: <20260324180258.1282560-1-leotimmins1974@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" luo_flb_file_finish_one() decremented incoming.count before making sure that the incoming FLB state had been materialized. If no earlier incoming retrieval had populated that state, the first decrement ran from zero and skipped the last-user finish path. Initialize the incoming FLB state before the first decrement so finish uses the serialized refcount instead of an uninitialized value. Fixes: cab056f2aae7 ("liveupdate: luo_flb: introduce File-Lifecycle-Bound g= lobal state") Signed-off-by: Leo Timmins --- kernel/liveupdate/luo_flb.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/kernel/liveupdate/luo_flb.c b/kernel/liveupdate/luo_flb.c index f52e8114837e..49fed585e965 100644 --- a/kernel/liveupdate/luo_flb.c +++ b/kernel/liveupdate/luo_flb.c @@ -192,10 +192,24 @@ static int luo_flb_retrieve_one(struct liveupdate_flb= *flb) static void luo_flb_file_finish_one(struct liveupdate_flb *flb) { struct luo_flb_private *private =3D luo_flb_get_private(flb); + bool needs_retrieve =3D false; u64 count; =20 - scoped_guard(mutex, &private->incoming.lock) + scoped_guard(mutex, &private->incoming.lock) { + if (!private->incoming.count && !private->incoming.finished) + needs_retrieve =3D true; + } + + if (needs_retrieve) { + int err =3D luo_flb_retrieve_one(flb); + + if (WARN_ON(err)) + return; + } + + scoped_guard(mutex, &private->incoming.lock) { count =3D --private->incoming.count; + } =20 if (!count) { struct liveupdate_flb_op_args args =3D {0}; --=20 2.53.0