From nobody Tue Jun 16 03:49:29 2026 Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) (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 ED1B3245020 for ; Wed, 15 Apr 2026 19:37:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776281862; cv=none; b=TcdeMVQyEwnEA6bfCTQT/4Hs2KIfdywcHeGFYyztJCOeU02egW7o9k/bEylejbU50DLASkA+gIZNPfFcCclmtFjt+4QHhNwJ7htiYJEEicGoqMPdIz3zilVD/z24CYWRJ5AWb6Rli4OeZeyXvNo5V9DHZ2uA4YxR6Tzze0VIjQ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776281862; c=relaxed/simple; bh=ybfYpu2gmXxjTFnz7p/Lrajg+1SqJwHMsCTNDKGLrr0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K3wvp3Ws/Viu/Ugm1wp5pVikEiPX6vuheWrHqtw0m1XEI6yFKx+Yjnf7QBQaJfvFnEDEfB9Kbos8tKfWI/9WW4p1weU5unAst8q2O3gah64gk+hZc6Khm0SM0LFnDJbW28Dtnt79dKpYZU9LzBxRrn8DyG06yXjm54fbhSgGVUo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=soleen.com; spf=pass smtp.mailfrom=soleen.com; dkim=pass (2048-bit key) header.d=soleen.com header.i=@soleen.com header.b=I5x3obHI; arc=none smtp.client-ip=209.85.160.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=soleen.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=soleen.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=soleen.com header.i=@soleen.com header.b="I5x3obHI" Received: by mail-qt1-f169.google.com with SMTP id d75a77b69052e-506bcb23a78so51197351cf.3 for ; Wed, 15 Apr 2026 12:37:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; t=1776281860; x=1776886660; 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=c5MDbzO0CGfZP12oWRbENuxmCpD7S72IZUtgRoyvkXQ=; b=I5x3obHIOsutoW46e2a7pX0Yxorn0b90TbuStCH8sW9dU9b7oqrm0gRVPC75pOoQBQ 3YNjCDrQot/mNNDDNp22pCgWSCVjXBfxM14R3trXO3JEgjtzs2WggSKL5C/frrFtNiNW L6JJSxaen9xQq4l6e+t051qK7PoWASP8Z5l4UkxXiJdSm2fi82zQpH1mbpXqvT/pwSO9 Elu6+1xwIU1kH+Ik7GHgOL4CBNF1OI6je7B7jCrj+5IMkFD8TBAnxix7/IkvfgpcaLfr SQVQuqZepuUoiu8GfGOcZ6w+f/z8eSr+e6sIuaVCkhucjfBnJ5VTrNCZk1MaZH2nD97R AM1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776281860; x=1776886660; 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=c5MDbzO0CGfZP12oWRbENuxmCpD7S72IZUtgRoyvkXQ=; b=n+/YAM4xsuCzRs+XlLwRqz4+nkdwk1IfGSJrVwdsGGUH1s0hM1+WTp7Jm9YCi3EUqy ncbz8Qay4RPuVBuvU5TwLbE8gtCLz+iZ2fLhQ4WPXrgQBix4dcLlTzaojznWWF8t/P0d iVtF31ftjgrTH9XBgx96KLaIxBBVpNtMWAWYxX5wFtRCuVpkQE3Ol4+f3xG1yqOiSJZn uxifweK60g3a5nOO4ve8PbF0Zjv50UO3NEuvtATo2a8Mc9YgS5UFKdIU7KdzCsYzvUoC EuWq/m2TKH7SmdHNdsVHX4KjX43LdU+1D0Cvzi/tLW5MgyvbSXyc4gX53bT5TBtbjVBS Egdg== X-Forwarded-Encrypted: i=1; AFNElJ8Cukr27AuLSgD9YxRGavwdMWfB4P2W3QSeWDJTnOKZQr+7Zgej2HBJijhFDzvhtg7W1qAlkktTv1Rq0tc=@vger.kernel.org X-Gm-Message-State: AOJu0YzQduHSEbEj+S4D81EpdLcquyj5szvJRSGRv9x9R1QjtxkuCKCD 1UIhuANULr+pLhBxj0lTopTyJXa8DEQWlirgJkQX6wQcXEZSp86mOFsaOqwcnpYHgLc= X-Gm-Gg: AeBDietvl/h/keeEHvQUK7MjzJTAmAROtodTIyeja3ex0WXpuS2/YIMkRzw96RqC7UR Kku9jN/+jc2qdx3oUGSPWVh8nk0kIAJn09QYKR6mVVkIAC9lbfn3q1lgWkarwlyxqFxg/G6PIAf rKfsSTBEwqa4OLRGXX3NJF6yWUHIvtUnB4pn/4OnGD6uCWJNrO/CdVcofrLGPzsYHh+ybjgRvKs mHyDXTyiqtBHCmjc4Gw7p+rN+vMWncjF0xvxzYVDJcQV6ptobCuDfeJZUEypf85XXEQZPGQw5F/ 4t6jWCN3Cg11sPi7aapX4kqIJEy8xKbFVcq6wWZ0LNCM1FFcE6ihiQJCHwEO/dwHbZ6CubkMRyB og1t+Iqhx1Oa2RjUHwG+HVaVQ/ExZsyUSFfzhH7h6r2E8lSKwckMBdyoOKzsTq2gVm4JyHeLqtg A9jFlSRVY5bIkl79+kKy5hz11AB8zP+x7SfGA/Z++In6BgNhOvPu4QrwiSHkgTsKEmbw== X-Received: by 2002:a05:622a:aa4a:10b0:50d:b164:5e40 with SMTP id d75a77b69052e-50dd5b7cc85mr271864731cf.37.1776281859850; Wed, 15 Apr 2026 12:37:39 -0700 (PDT) Received: from plex.localdomain ([71.181.43.54]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-50e1af9dc5fsm19788171cf.16.2026.04.15.12.37.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2026 12:37:39 -0700 (PDT) From: Pasha Tatashin To: rppt@kernel.org Cc: pasha.tatashin@soleen.com, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, dmatlack@google.com, pratyush@kernel.org, skhawaja@google.com Subject: [PATCH v4] liveupdate: fix return value on session allocation failure Date: Wed, 15 Apr 2026 19:37:38 +0000 Message-ID: <20260415193738.515491-1-pasha.tatashin@soleen.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: 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 session allocation fails during deserialization, the global 'err' variable was not updated before returning. This caused subsequent calls to luo_session_deserialize() to incorrectly report success. Ensure 'err' is set to the error code from PTR_ERR(session). This ensures that an error is correctly returned to userspace when it attempts to open /dev/liveupdate in the new kernel if deserialization failed. Signed-off-by: Pasha Tatashin Reviewed-by: Pratyush Yadav (Google) Reviewed-by: Mike Rapoport (Microsoft) --- kernel/liveupdate/luo_session.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/kernel/liveupdate/luo_session.c b/kernel/liveupdate/luo_sessio= n.c index a3327a28fc1f..7a42385dabe2 100644 --- a/kernel/liveupdate/luo_session.c +++ b/kernel/liveupdate/luo_session.c @@ -514,11 +514,12 @@ int luo_session_deserialize(void) { struct luo_session_header *sh =3D &luo_session_global.incoming; static bool is_deserialized; - static int err; + static int saved_err; + int err; =20 /* If has been deserialized, always return the same error code */ if (is_deserialized) - return err; + return saved_err; =20 is_deserialized =3D true; if (!sh->active) @@ -547,7 +548,8 @@ int luo_session_deserialize(void) pr_warn("Failed to allocate session [%.*s] during deserialization %pe\n= ", (int)sizeof(sh->ser[i].name), sh->ser[i].name, session); - return PTR_ERR(session); + err =3D PTR_ERR(session); + goto save_err; } =20 err =3D luo_session_insert(sh, session); @@ -555,7 +557,7 @@ int luo_session_deserialize(void) pr_warn("Failed to insert session [%s] %pe\n", session->name, ERR_PTR(err)); luo_session_free(session); - return err; + goto save_err; } =20 scoped_guard(mutex, &session->mutex) { @@ -565,7 +567,7 @@ int luo_session_deserialize(void) if (err) { pr_warn("Failed to deserialize files for session [%s] %pe\n", session->name, ERR_PTR(err)); - return err; + goto save_err; } } =20 @@ -574,6 +576,9 @@ int luo_session_deserialize(void) sh->ser =3D NULL; =20 return 0; +save_err: + saved_err =3D err; + return err; } =20 int luo_session_serialize(void) --=20 2.43.0