From patchwork Wed May 31 21:44:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sava Jakovljev X-Patchwork-Id: 1788643 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::440; helo=mail-wr1-x440.google.com; envelope-from=swupdate+bncbcezfo7yqakrbsh732rqmgqeuotnuoa@googlegroups.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20221208 header.b=n1VqMgGj; dkim-atps=neutral Received: from mail-wr1-x440.google.com (mail-wr1-x440.google.com [IPv6:2a00:1450:4864:20::440]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QWjTq5Wskz20Py for ; Thu, 1 Jun 2023 07:44:45 +1000 (AEST) Received: by mail-wr1-x440.google.com with SMTP id ffacd0b85a97d-30af779d6e6sf51577f8f.3 for ; Wed, 31 May 2023 14:44:45 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1685569481; cv=pass; d=google.com; s=arc-20160816; b=kAn8fuyAsUDEWp14rAUUWlgEZi0t43yPOAY3N0oR368+4F4DlEFgGLosYF0P4tnqfh 27VEjV6Vxo/3sJEyEs/P9XSBMO8hh0HmQMyfFY82tSexTTIbszR+aEVRK2MF/mSLT/Vc EcnFjisFyRUdAF3iauBNOJqzzoAOtkAFV8PY21m+XSTnVxP7BwjtsfQvKz0zn2yBX0/P nnVXBjMQiyPU/xKgoGqpKpeoc0KvPbS1ZZ30VScaOP8bIde/Hpb9OPWDNz6he2AwKkK5 zmfWs9SSyxd35NWcCnSbBv9+HUwpyI2W5oh+7U8IvcfNGsY79KWZRdH5nwpN5Isn8AA3 /qrQ== ARC-Message-Signature: i=3; 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=AkklRjfICEA5SxJ4hCMBezXrOqZWrOrZDdLtCORfRWs=; b=w8IE1zQtO1O+TJBVR0uIEcfPQe0wF32zOv2fEnE6Lt1Y954CwZEuVfXh7ed3ErbgSO vS01SZZuLbUt43Oe7nr2T7LXUFDG9cladWaTpSxBg9uv2MgB4AGUIvqcrNkQ1FhmPEMD 86o5eS7sYlW9C6OwPpLAFwNNvTCNd+Fn5JWIxKXHSIXQ1W8YfF8RUpEHLyAWrz7Nifqw PU9VgWOv23EVWB9AwyKEu+gFHqjy9sc838USCa74IvWkJ0NzQiyfO9GdlJeBsZUlWr2h esN27F7/RpRuIipcwZhTdCrCzdhPdRJ+46h9R6nrs8ZIDwrAekDzOgJXWWWAkTFKdG2u hTUw== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@outlook.com header.s=selector1 header.b="G/n8A1hF"; arc=pass (i=1); spf=pass (google.com: domain of sjakovljev@outlook.com designates 2a01:111:f400:7e1b::829 as permitted sender) smtp.mailfrom=sjakovljev@outlook.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20221208; t=1685569481; x=1688161481; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:message-id:date:subject:cc:to:from :sender:from:to:cc:subject:date:message-id:reply-to; bh=AkklRjfICEA5SxJ4hCMBezXrOqZWrOrZDdLtCORfRWs=; b=n1VqMgGjvmo+LRMmFMjPGvHoWqpE8LDefayubEuZF8Bn5/jWZXkdwlnlyYm9MWEldg boK13yYtE8Mmxgf1rQUucBRjaT64uux8BOR4hPns6WQdKa28NRlL4Mo+yIhC0MAgteSS l7RQg3WL1gKHJ/euYTpIXYN/OyBKq4m0t7pnyzFqFwnBjRbhzw9HRs31288+HdVpL6MZ GWnhk3EOY0GgTf7b0hYS7tH01QB+MMtmse1JLRNOatvyaDmWQ9uvq5qlEh16y7xMyRzu Br2IcevGsg3uOKCVfzwJWMT18eMShX8Gv8tDSkClt5/q9d5N+JqBj+4ULkzZt0pMhxJ5 OKsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685569481; x=1688161481; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :message-id:date:subject:cc:to:from:x-beenthere:x-gm-message-state :sender:from:to:cc:subject:date:message-id:reply-to; bh=AkklRjfICEA5SxJ4hCMBezXrOqZWrOrZDdLtCORfRWs=; b=kTM517bAFXTw96lOK4ubIccoIB46eT94zWB1MHS7zGxI3dUBHO26U9RNdU+GjmzkXb /IFsIhYl1Cx8pB3KDLc0/N/U7mRxN7vNzOOirg2rITHFrwAkca/Al4SMJDgycy8Et3I3 klPJDYK2IXpmC1l69Txv9K2hryKQBoj8TvdTgCIXbZFuHMoPap7tIr1CFnYLjSSuiefS wLES4fswIygbHc5onUh3LmutsDhKp3ZVrAdfaHoXoMfkcKDK7YztuUiGTHpoSFkSHrlp dsmH0YBk1vN5npa36/0SVmXYlIoJwsPMVf9HbdhnvomnWXZUlrRA2A7Q3V7DmkwV0jfg gYSg== Sender: swupdate@googlegroups.com X-Gm-Message-State: AC+VfDzX5KJLtHwqU4LWjQfoTK9ZZ1kCqtqZnoUx6n+tKCFOCywTeftm gOs6qpMFExn3u+zk90UNlSY= X-Google-Smtp-Source: ACHHUZ4kOy8ltTf2UKL4ZQzIcvrr7MWxMtoWB7Bz7ktymwiRwTHqj2K23BK7XzRv1mLbKQJDc/HJsA== X-Received: by 2002:adf:f8d2:0:b0:306:4550:f651 with SMTP id f18-20020adff8d2000000b003064550f651mr310800wrq.4.1685569480612; Wed, 31 May 2023 14:44:40 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:aa7:d298:0:b0:50c:9b3f:9e75 with SMTP id w24-20020aa7d298000000b0050c9b3f9e75ls154589edq.1.-pod-prod-03-eu; Wed, 31 May 2023 14:44:39 -0700 (PDT) X-Received: by 2002:a17:907:60cf:b0:96f:6a03:eca with SMTP id hv15-20020a17090760cf00b0096f6a030ecamr7249477ejc.48.1685569478991; Wed, 31 May 2023 14:44:38 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1685569478; cv=pass; d=google.com; s=arc-20160816; b=qIr+TXkastr0jAD1m7kNhSexyxi8msNWMJq7dif2l+bsGg+jfcaFGmMDwhQsG2+NKu 3bPoh3PeiUZbehxTheUop9WUvtN3x9OWIPxK6UabBSDlzw3+2ZqbohBqU/NepAG5SxBf UNjTu+Q+S5jsEXlyllfhxSj3stNoUwykvxnl1H16FF4h/2jTTcGl30dPqXtiIvymjbBJ euz48UILS+Cy9cyMuVr8HDBXWydEQjr3uz4EAiwLAqVQXzCrk9OeQ1EzIvN2Z8KDYrIN D0l0yNrBmyZ8BUn2bOdoahZQzXHfsx1ru/JYKzzbr/PY/2jUHq7yVWov8x6zt0Gszs3w S8lQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-transfer-encoding:message-id:date:subject:cc :to:from:dkim-signature; bh=7x0P2KetxqjYL6UIyw+z4odp/hdmjKpf4qE9x9KQNmg=; b=FOmJ/wAVR/jv9HXiuHUcloLebGkYGIDOGSmR67CJJj0hDUOoVO0ipVzVF64EK9LmSM Y9E7PJHCXeofe4xfB4fJqqW/sLtwQrNfT0eSZvmMpS9aWM+IhduIwV1Rlulc3ReTkA6i ajkHsnsEH1H941JrK+lzJmqYvqMKYx5UZ73zIXUAwvr7lUdr3xKT+8rKhfoxVbmEA7Vi LiKnPz/LB5Kwv6hp0bSTu2S87Xxtgq/RLKwnvA/+/DjNsQOWcTjCfX5WH9Qr/VL21wLk s/pLyeDEKBtAqPpFM/ppYenoXz1Z5BTvGqoCO1DaW4rKAg1aLGqQXcu63zXhc2xD/KJc V8dQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@outlook.com header.s=selector1 header.b="G/n8A1hF"; arc=pass (i=1); spf=pass (google.com: domain of sjakovljev@outlook.com designates 2a01:111:f400:7e1b::829 as permitted sender) smtp.mailfrom=sjakovljev@outlook.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn20829.outbound.protection.outlook.com. [2a01:111:f400:7e1b::829]) by gmr-mx.google.com with ESMTPS id tj14-20020a170907c24e00b0097374e50e15si1405469ejc.1.2023.05.31.14.44.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 31 May 2023 14:44:38 -0700 (PDT) Received-SPF: pass (google.com: domain of sjakovljev@outlook.com designates 2a01:111:f400:7e1b::829 as permitted sender) client-ip=2a01:111:f400:7e1b::829; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J7AHiBh5D6ywzsq9BVNAlTEil5pvvETUh4VmIRK3uKYL6FiJd39f5HA+HLeMrIrHNOclGQSx8lAttOnMd6ItTPtmZpzj7Ovgf+U/nRBK/E5VamgNI7weUtO/1Ud0kq8WM8iELel0ujxYGwHtNpOJn335zE7Z7vcumClPlGahiJi2yRENSHLZrs2VKUF5igq+JlVkHVKNiuseMmGuxSr7pdrger5smVaOOECs2FUOoEl6EoJHI6EpZ3zBBf737ApZBovO7NJK8FTgsK4TIvtKIbNWIIJ3ZAFDBybZqKHnJR+ayUOJQZm2IuNU6eLLqOxGIuT13B8BTq4ySX0py62aqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7x0P2KetxqjYL6UIyw+z4odp/hdmjKpf4qE9x9KQNmg=; b=etSWFuMk+ExQD3YIx5BtzhB8qatrFuXWSOd58/SeYl2kogput/iIlu1rgc/LkhNp8bkUBejmig51iMf3sFt0g3TWyjeVwiOr/xeq+I8nzIjAW/z+aAaJL5f54htv+Twd0aLwxcPKfywPTY+/Bv/04tBylCO5zxL2W73e85dMn0TmKp85Nlp/2JFc3YH/U7VJOtGpYhtTHSFbVHjphFkPUZXoSBT7v3+WEzEK3Z04KmAit0sa/ZlW3xdk4GWIQmrdbHz+pIdjNnDhHfQFpeAgf5afwzqdL1cd/iYeAht1sQLJ9dT70CK95rBaQKdYDhfaaAZwMLoXHHN+UMbmu/TrhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from PAWP192MB2128.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:33c::16) by DBAP192MB0970.EURP192.PROD.OUTLOOK.COM (2603:10a6:10:1c5::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.24; Wed, 31 May 2023 21:44:38 +0000 Received: from PAWP192MB2128.EURP192.PROD.OUTLOOK.COM ([fe80::ec9d:a859:6ab1:b6c3]) by PAWP192MB2128.EURP192.PROD.OUTLOOK.COM ([fe80::ec9d:a859:6ab1:b6c3%7]) with mapi id 15.20.6433.024; Wed, 31 May 2023 21:44:38 +0000 From: Sava Jakovljev To: swupdate@googlegroups.com Cc: Sava Jakovljev Subject: [swupdate] [PATCH] raw handler: Unmount target device when installing a file fails Date: Wed, 31 May 2023 23:44:22 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [udYv6vUap19kX+wsQVlXKO0n8TMhuN2S] X-ClientProxiedBy: BY5PR04CA0014.namprd04.prod.outlook.com (2603:10b6:a03:1d0::24) To PAWP192MB2128.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:33c::16) X-Microsoft-Original-Message-ID: <20230531214422.1231944-1-sjakovljev@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAWP192MB2128:EE_|DBAP192MB0970:EE_ X-MS-Office365-Filtering-Correlation-Id: 503a3a9e-b223-41d2-5574-08db62203b3f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IRbrQsia2SG8fXFcedxe+RBxY/Y+iOyty8mv8Rt3q3xXfCaR0f89Dy93TK2QMsdzTPKy9BZRdyIq96HlTLRdrx6AnbestimPN5wWKCSREilfv4zkhfz09ivtRjb9Hr2HUrV9yhVZCLPie/x8xY4+J7OpfdoF7Kypl9QzVD/aYtdUFzJe6V49bFHUhlLciVHfFFAhXTP/3qknTFIbyHidBjivWckRKBfdJ4rYIiGR0VbxDeSDoqTgTZ43VJZYuBddp5e+xxiJIwiv1naIBD4JlLsyQRLi06xQXv+cbkzeIVOaqrHRn8ETpf858q8RxMhuphC5pNA75sfRNBMsoeZaCrAAYqoFzTQSCX4Ueg/z24/lQCuOlf/wif6tH9/IcgHIfMUKm3mpxuiblk5JO8voGb4JoDPJnjFvO50XNOHj/dfJvk7UN55HhyV+oA+z9j3NaSLPjDELI2N/NXj0D1p+BKCerqkSl/ddEwVYUuzly1CnCipTwrSeopqZbzB2H+q0DGUuN+uSyziF1auIM+LT2kncghj0JaoGWxnw4kSTuJLpXwvA+m3m8pmceZHv1sX9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: k2xZGJdPeIfhg4IYChJicl46qUqelLG04dVETYEvDRu1lGXj0iPLDlppgVUn7bheCXQ7hguN+5h/sajaBpnw9e82eOJI78yr9y5WaV6l4C9VgvT39C/1AUKLQ3tUP0t5L914NVseUDxC1rqp3MorO1YwrMpUmJLVqRVv8f93NX0ELB7+SUvqmW4HxhwyIipx4A1IyRElB+hZAbiKeSL6Pxr7GZiIo+n/NBUj0IIC2AGstq0jCGFjudBVGgaAXwiNarKEiN+FihD/5Z61Vx4SS4ZvIVQM2PAFiT3WFcSug1x9rSWL7kjiF6wNhOGy5uxeOL8RL5vnEpFTmwwe+4qEbCnTMlZqOvlUv//v53qxK/lcN6MxdNRsowCfmrhKyR+IgKm03xgCsgys6YEm99trZRfNQvTQysB98KL7yYpyAN8AHICyalwJivBRca7Tm20M5h/AKmDbw2EitBoCTizqdLrV8pNrKe0AmzQquEMg4mBzelNlVw4kgSeM+XTw2+gYUX+Ipuu2yNh6QcQpjWw+y+/WbDYRf88wFGmo3zYB5jBnesUi+BpnlqfictgTQ3XrdWwmkcKvBtzmLNJAFEvN5JJhyPBmZX1LakLBdwHIHFajLeIpMnDe175PzkOY1az8EiPBP7mYZJsD5hiIHgT+Db86sCXg/tITDFqfc+9bge5XrchDOO5RyDGwc0TppaecOvo5RdMHcijtXKlO316T8Zf5YBMBv2jJsrYUrmoy4DAcRUSVVMVZrzZdS/BxjVMj/Re0VjSKqVKqkA0bd7057oZuiLo0CmxIq+EQSr6XI4ln1IQMt7HN2C7E6BJo+GrIRUkyFDR3I1MMTNHEMW9JTM/np5TxxiSBnkx1BAc5Ej07u0qweFWinDlgN4S3PWyim7uZMrdQ0jTFmYgJfWZt7FENcq5wRiUyTq4QwrDaQFGpH+5qG9+0GEirutWPPmF1/EnRzoDmXeoxXXEeXSmDKvGh6KRzhP69ynWofLdbyOWWpa8eQlyKcX73aUMCYpyY3ttqlG+SPHVYO22b1uIeg1gDDS5stNacDNv/Maxf8gyox/Ifr787uSJxl7tpVHc0ohWBFciXKHw+wUhPZqyStm3FYPrIAorXhFnvTbsYTOkXO0+ap+rwVZHIzv9URqJSQQafVuFsYwR2honsu8o57xTSe4UCVktkU3hJceB6st7Us+yl7DCn5ZeAJta9V6KijFZgacIv3U1X7aU8UJlYXADrwdIzcH3rXl9GbZls6iQ= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 503a3a9e-b223-41d2-5574-08db62203b3f X-MS-Exchange-CrossTenant-AuthSource: PAWP192MB2128.EURP192.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2023 21:44:38.1644 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAP192MB0970 X-Original-Sender: sjakovljev@outlook.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@outlook.com header.s=selector1 header.b="G/n8A1hF"; arc=pass (i=1); spf=pass (google.com: domain of sjakovljev@outlook.com designates 2a01:111:f400:7e1b::829 as permitted sender) smtp.mailfrom=sjakovljev@outlook.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.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: , From: Sava Jakovljev * Make sure to call 'swupdate_umount' in every scenario in 'install_raw_file' function - this patch thus solves problems when an update fails on installing a file, and next update cannot be done because 'swupdate_mount' function fails with message "already mounted" because the mount is still there from the previous attempt. --- handlers/raw_handler.c | 45 +++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/handlers/raw_handler.c b/handlers/raw_handler.c index 45f038a..02de03e 100644 --- a/handlers/raw_handler.c +++ b/handlers/raw_handler.c @@ -153,7 +153,7 @@ static int install_raw_file(struct img_type *img, char path[255]; char tmp_path[255]; int fdout; - int ret = 0; + int ret = -1; int use_mount = (strlen(img->device) && strlen(img->filesystem)) ? 1 : 0; char* DATADST_DIR = alloca(strlen(get_tmpdir())+strlen(DATADST_DIR_SUFFIX)+1); sprintf(DATADST_DIR, "%s%s", get_tmpdir(), DATADST_DIR_SUFFIX); @@ -174,7 +174,7 @@ static int install_raw_file(struct img_type *img, if (snprintf(path, sizeof(path), "%s%s", DATADST_DIR, img->path) >= (int)sizeof(path)) { ERROR("Path too long: %s%s", DATADST_DIR, img->path); - return -1; + goto cleanup; } } else { if (snprintf(path, sizeof(path), "%s", img->path) >= (int)sizeof(path)) { @@ -186,7 +186,8 @@ static int install_raw_file(struct img_type *img, if (strtobool(dict_get_value(&img->properties, "atomic-install"))) { if (snprintf(tmp_path, sizeof(tmp_path), "%s.tmp", path) >= (int)sizeof(tmp_path)) { ERROR("Temp path too long: %s.tmp", img->path); - return -1; + ret = -1; + goto cleanup; } } else { @@ -196,43 +197,55 @@ static int install_raw_file(struct img_type *img, if (strtobool(dict_get_value(&img->properties, "create-destination"))) { TRACE("Creating path %s", path); - fdout = mkpath(dirname(strdupa(path)), 0755); - if (fdout < 0) { + ret = mkpath(dirname(strdupa(path)), 0755); + if (ret < 0) { ERROR("I cannot create path %s: %s", path, strerror(errno)); - return -1; + goto cleanup; } } fdout = openfileoutput(tmp_path); - if (fdout < 0) - return fdout; + if (fdout < 0) { + ret = -1; + goto cleanup; + } if (!img_check_free_space(img, fdout)) { - return -ENOSPC; + ret = -ENOSPC; + goto cleanup; } ret = copyimage(&fdout, img, NULL); - if (ret< 0) { + if (ret < 0) { ERROR("Error copying extracted file"); + goto cleanup; } - if(fsync(fdout)) { + if (fsync(fdout)) { ERROR("Error writing %s to disk: %s", tmp_path, strerror(errno)); - return -1; + ret = -1; + goto cleanup; } close(fdout); + fdout = 0; if (strtobool(dict_get_value(&img->properties, "atomic-install"))) { TRACE("Renaming file %s to %s", tmp_path, path); - if(rename(tmp_path, path)) { + if (rename(tmp_path, path)) { ERROR("Error renaming %s to %s: %s", tmp_path, path, strerror(errno)); - return -1; + ret = -1; + goto cleanup; } } - if (use_mount) { + ret = 0; + +cleanup: + if (fdout > 0) + close(fdout); + + if (use_mount) swupdate_umount(DATADST_DIR); - } return ret; }