From patchwork Tue Jan 26 18:08:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Storm, Christian" X-Patchwork-Id: 1431838 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::33c; helo=mail-wm1-x33c.google.com; envelope-from=swupdate+bncbdd6bwv65qpbbrfuygaamgqepx2px7a@googlegroups.com; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20161025 header.b=X0OJIjMv; dkim-atps=neutral Received: from mail-wm1-x33c.google.com (mail-wm1-x33c.google.com [IPv6:2a00:1450:4864:20::33c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DQF7H6KScz9sVn for ; Wed, 27 Jan 2021 05:07:06 +1100 (AEDT) Received: by mail-wm1-x33c.google.com with SMTP id y9sf1638543wmi.8 for ; Tue, 26 Jan 2021 10:07:06 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1611684420; cv=pass; d=google.com; s=arc-20160816; b=pJ5ECBSk2FOo7BvtjswtG1SVelP1p+znaJ8m11AxHBCS+1eq7c6EuwZseFChD3oysb e8VmdqQ4V9HuDA5lt1JVyxe9TuCy23NL3/fMuQqFD5SHAm6Hra4jkOh+dWHcJ5GtY48Q crdqNVWnzF3627fB7QejsG7/Nt10Tsra3CivIeGr0gkEgrmAEFsCIzTx/kjqw7UENOLs eEBM7tv3ELNWK5jGQALPzXFqMbanSk0AYX5iMLripngMbI5X4HrVKbBlZjeooQocp7dx rw7We+OHc6U1UFSMNtSpSJ3r9ivbIaMXYPYCzCm2z7I/dbVlCIHyDJ6DRqdhKHgwzAs2 oaXg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:message-id:date :subject:cc:to:from:sender:dkim-signature; bh=fhi4ll2DIsI3kXw6JGPkPsXBeiL40eGbUi7JRvu3/oM=; b=wTPo4WedWrBnZCmtP6rHJPgSFa8OOL+5oudqeJUeQGS9qOS+qXICl2Cm8wSpWSyxcq nn7mS7SbYBmm9AJnbrG1o5qAwF3/u3DTRUHsmbjTQxRsU6rbx+AlWEwTAYhW0J94liPn HFR1dxI4apsEelJ1QBK3WJHNMiNZuJn0ia9uKSPGlPTvONWK5vBLayKm17o+NtLQtkoQ IuybMmquX0Ydm3VvLgLW1IhazXrUNPJPohNsvljnmWErCKEBLjbvpH46ow4sXs57O+cP 4JfkkQf1Fg/atIc9Lkmw+6MiTiHNGpvNu/rilFm2QfV593lqSCcy00lN1EVn8vupIYhb 98fg== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=fhi4ll2DIsI3kXw6JGPkPsXBeiL40eGbUi7JRvu3/oM=; b=X0OJIjMvVwm47dCasum2uJ6ILZPNjsmCeC1k5WnyiaK/gX+n7+rZcvqunK0Fsdn7Iy p4LxRpoeXYgrn1/3/RNpvI0pk9XZfhUCJLf3z2tHu0kW3iNDKpHzM/7RCYOUVG3sT/Pi 9beypS0sIi3BM6ZOPeiqvds6C/qFO2emN35jj748WGmF/rq84oAeeojICB3mjRq+38Ol XwCBKKg85YYJ5fo7q4+TuHtZI0AvppIKom29/meatffs8x5pmhvQxL1l3tSSPDOjnV1R dMm0eyb6jdzBQObwhO2r0cCkBv0Uc+aCP8Piy2TMllalNvOJoF4Nl7Iud6gYLtJU8st3 SVfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:x-spam-checked-in-group:list-post :list-help:list-archive:list-subscribe:list-unsubscribe; bh=fhi4ll2DIsI3kXw6JGPkPsXBeiL40eGbUi7JRvu3/oM=; b=J7HO+9TBKQqW6Wtcta7bl/OM4xKZOA8Oju1NbKbQg7PUrLsGdmuW/oTAu3qiLIWAPQ hg7+zVJuLmgb/Zhq63cHclKCQex2iQ8ftDwYa4zrDE1xOfkriW0JRVYlOlzrct5HTZtp pZW1IUIYl/rcTACNKFdVDx+ftb/Id9T2p918ix2R6o/MoxERGRc0tQSDSZxw4xAffTrc S3ZMQKxynoZMBHuTk7puoDIF/xYKPQxWKwRYmLWichHuNtlsLbcoE1runbJY6zgI3BEp 86JgMJbXyM9sIzhOBOZ9rpP8nQe+taTkc15nVYIrPPEUcPHa5N51JcY9xsLZsg56FtgB a3og== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM531UF/AvKpIc7SdL5lwvoEQ1hwP22yXjPi+xkxlUOFUz4tKaQ5U6 atqScF66MsVOVl27r9xU85I= X-Google-Smtp-Source: ABdhPJxI+Vl+8FCWy/e3zbeF4QRYdvXwbet5TBKrk1Yhs2qXHWeZ9jDaZaC/ookirRk1apKvFJD+zA== X-Received: by 2002:adf:dd45:: with SMTP id u5mr7330775wrm.392.1611684420554; Tue, 26 Jan 2021 10:07:00 -0800 (PST) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a5d:4485:: with SMTP id j5ls2197696wrq.1.gmail; Tue, 26 Jan 2021 10:06:59 -0800 (PST) X-Received: by 2002:a5d:40c5:: with SMTP id b5mr7522120wrq.121.1611684419712; Tue, 26 Jan 2021 10:06:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611684419; cv=none; d=google.com; s=arc-20160816; b=JdQn7B5gE9/BAF1o4wH9pjKLNgqiRiRVZ+rk90MQwjwYAYji/HhDtRdF4yZsZuNUV0 Ix9KTITu6nv1ZUkyUjVFr4gI247l2thvGqjj8XTNvqf/ZGe3e7RSbVoeBVO7//nFgNyd 93GCxpz+wu4xt9ROAH02JHJn2HAildwYBGJDQh6ZJH7ZTjNZ26rRWfj6SGECPUhev6nC ERtOy/rP4xUMCYWTx9xeyJtdqFyEY8RQXab6j0RHCCAXbuZSDJyMB0+EAn2+nXc/A0Tt Z4FxlSRBMllb1xAa2h/kuP8PhtvM5CrBssuNSjOuGq2pnjXZbzZwqiI/nqYLLloMQGxt hinw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from; bh=Y5xzGpySuV1uNwHOgbYJlupNxvhN5sd57+G5lMSS5u8=; b=W20esiGPxSteVQT5pJ3VkR1nQ9HI+fckHsWwtW1RA8903l4mF6/AOdwOj10Wr0/ZZa mJdAiibzETS/ADQPejo/3eP/2eAw5/SzGcSdcB0gx+X43S0EVCsIX1VBxY0yjhYo8BMg Rc127dSvVIlNa6zlSmUw5fRCkW5vzXCJ6U2jbdWiihI6NI1Z1iEdBuD4udgZnQjoK835 xPN1ZGwqMj/DrR/LdRP7IfJcKsPsCnlupDNkY1t6X/o8ZghCvU9aE8BYrdGIy3O17ti8 del2OejRdL9a+i+NkizKgALJ8PcD0BChW/qtrpcLWKrqF96c+M7IP3RYPWjHdSW9QypL 6VGA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id u24si168995wmm.1.2021.01.26.10.06.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Jan 2021 10:06:59 -0800 (PST) Received-SPF: pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id 10QI6xtD023165 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 26 Jan 2021 19:06:59 +0100 Received: from MD1ZFJVC.ad001.siemens.net ([167.87.7.200]) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id 10QI6wlv023058; Tue, 26 Jan 2021 19:06:59 +0100 From: Christian Storm To: swupdate@googlegroups.com Cc: Christian Storm Subject: [swupdate] [PATCH] state: Make save_state() write to STATE_KEY unconditionally Date: Tue, 26 Jan 2021 19:08:23 +0100 Message-Id: <20210126180823.44900-1-christian.storm@siemens.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 X-Original-Sender: christian.storm@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Analogously to get_state() unconditionally reading STATE_KEY, make save_state() unconditionally write to STATE_KEY, for symmetry and consistency. Writing (and reading) other bootloader environment variables (as this is the only persistent state backing store currently) is still possible directly via bootloader.h's methods. Signed-off-by: Christian Storm Acked-by: Stefano Babic --- core/network_thread.c | 2 +- core/state.c | 4 ++-- core/stream_interface.c | 4 ++-- include/state.h | 2 +- suricatta/server_hawkbit.c | 6 +++--- test/test_server_hawkbit.c | 7 +++---- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/core/network_thread.c b/core/network_thread.c index 99fbaf9..21ab75c 100644 --- a/core/network_thread.c +++ b/core/network_thread.c @@ -512,7 +512,7 @@ void *network_thread (void *data) case SET_UPDATE_STATE: value = *(update_state_t *)msg.data.msg; msg.type = (is_valid_state(value) && - save_state((char *)STATE_KEY, value) == SERVER_OK) + save_state(value) == SERVER_OK) ? ACK : NACK; break; diff --git a/core/state.c b/core/state.c index fe415ea..14905fe 100644 --- a/core/state.c +++ b/core/state.c @@ -42,7 +42,7 @@ static int do_save_state(char *key, char* value) return bootloader_env_set(key, value); } -int save_state(char *key, update_state_t value) +int save_state(update_state_t value) { char value_str[2] = {value, '\0'}; ipc_message msg; @@ -54,7 +54,7 @@ int save_state(char *key, update_state_t value) return (ipc_send_cmd(&msg)); } else { /* Main process */ - return do_save_state(key, value_str); + return do_save_state((char *)STATE_KEY, value_str); } } diff --git a/core/stream_interface.c b/core/stream_interface.c index 3907ade..558e857 100644 --- a/core/stream_interface.c +++ b/core/stream_interface.c @@ -605,7 +605,7 @@ void *network_initializer(void *data) inst.last_install = FAILURE; if (!software->globals.dry_run && software->bootloader_state_marker - && save_state((char *)STATE_KEY, STATE_FAILED) != SERVER_OK) { + && save_state(STATE_FAILED) != SERVER_OK) { WARN("Cannot persistently store FAILED update state."); } } else { @@ -618,7 +618,7 @@ void *network_initializer(void *data) } if (!software->globals.dry_run && software->bootloader_state_marker - && save_state((char *)STATE_KEY, STATE_INSTALLED) != SERVER_OK) { + && save_state(STATE_INSTALLED) != SERVER_OK) { ERROR("Cannot persistently store INSTALLED update state."); notify(FAILURE, RECOVERY_ERROR, ERRORLEVEL, "Installation failed !"); inst.last_install = FAILURE; diff --git a/include/state.h b/include/state.h index 4ddb607..5814653 100644 --- a/include/state.h +++ b/include/state.h @@ -58,5 +58,5 @@ static inline char* get_state_string(update_state_t state) { return (char*)""; } -int save_state(char *key, update_state_t value); +int save_state(update_state_t value); update_state_t get_state(void); diff --git a/suricatta/server_hawkbit.c b/suricatta/server_hawkbit.c index df48180..86b5c8a 100644 --- a/suricatta/server_hawkbit.c +++ b/suricatta/server_hawkbit.c @@ -740,7 +740,7 @@ server_op_res_t server_has_pending_action(int *action_id) /* * Save the state */ - if ((result = save_state((char *)STATE_KEY, STATE_OK)) != SERVER_OK) { + if ((result = save_state(STATE_OK)) != SERVER_OK) { ERROR("Error while resetting update state on persistent " "storage.\n"); } @@ -891,7 +891,7 @@ server_op_res_t server_handle_initial_state(update_state_t stateovrrd) /* NOTE (Re-)setting STATE_KEY=STATE_OK == '0' instead of deleting it * as it may be required for the switchback/recovery U-Boot logics. */ - if ((result = save_state((char *)STATE_KEY, STATE_OK)) != SERVER_OK) { + if ((result = save_state(STATE_OK)) != SERVER_OK) { ERROR("Error while resetting update state on persistent " "storage.\n"); return result; @@ -1945,7 +1945,7 @@ static server_op_res_t server_activation_ipc(ipc_message *msg) /* * Save the state */ - if ((result = save_state((char *)STATE_KEY, STATE_OK)) != SERVER_OK) { + if ((result = save_state(STATE_OK)) != SERVER_OK) { ERROR("Error while resetting update state on persistent " "storage.\n"); } diff --git a/test/test_server_hawkbit.c b/test/test_server_hawkbit.c index b26d6a9..61e20fd 100644 --- a/test/test_server_hawkbit.c +++ b/test/test_server_hawkbit.c @@ -115,11 +115,10 @@ channel_op_res_t __wrap_channel_get(channel_t *this, void *data) return mock_type(channel_op_res_t); } -extern int __real_save_state(char *key, update_state_t value); -int __wrap_save_state(char *key, update_state_t *value); -int __wrap_save_state(char *key, update_state_t *value) +extern int __real_save_state(update_state_t value); +int __wrap_save_state(update_state_t *value); +int __wrap_save_state(update_state_t *value) { - (void)key; (void)value; return mock_type(int); }