From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BF975C4338F for ; Wed, 25 Aug 2021 01:20:33 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 090A461163 for ; Wed, 25 Aug 2021 01:20:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 090A461163 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2C6CD82EBB; Wed, 25 Aug 2021 03:20:27 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="d2cgdemG"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id EFAB88032E; Tue, 24 Aug 2021 17:30:16 +0200 (CEST) Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id F306D82DF6 for ; Tue, 24 Aug 2021 17:30:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=thibaultferrante@gmail.com Received: by mail-ej1-x62d.google.com with SMTP id u14so20337489ejf.13 for ; Tue, 24 Aug 2021 08:30:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=414VZoymFWOBH4Rlq2xvjckYDKW4hTj7B7nXyyEoaTU=; b=d2cgdemG6JSbSoVQkl43ba7ENPVAnyxXYz0eoU9Hivx+AmGkn/XQgxoasI7vxeEpMC MhVzLJ7SrhpSubidsTBfOCh3xJEef9whXHpTTWQqsLSzjZ6jqADDZIJQJPJcJjUnI8dE 2KcEQYYMeZZUGsHYWaa8nfiyLpaqSbnnQAkR3WnMuwKC/QjOY3R4SeTR13a5zzBZJ2Wq hXlg6QizYqK2EFlYw6imuNB7/Obart7ezYrKTROFinU69MJctTGVWRJyf63cWt/MbcsN BgdbdSCWKxTk3+NcoyXHie8maWhPFQUaaSIqLPXdu7/9tH2rgsa0Y7S7QgB1prBtAMrD armQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=414VZoymFWOBH4Rlq2xvjckYDKW4hTj7B7nXyyEoaTU=; b=iKldNmma1/0ZPk1Q8d/O1UswR7y5WhtXiVc3oRxOAD/bYm8yj2Zz20EmwhbV/YcwvA I8uSmt+d5/6M/LsHr3bvhEcl4ojyiYdEGxxQvfjlGtdFnoLH9KYko9vuhSSrbSSohMjx GbWvPHpVOp5QqH+4GpqiiD7yIvFB/yN28asqQ5FeoPynHD9i3AskjXq+Yv09VdhB1CaW 6UWSPgKblGmydeb4IGIup0xn8PT/1azu7mSc9AFPJWmx41GD6SNFqRhosIhqnjnpCTyB NsM/bSBF4JKtCYH1Dr93Ia4Djc2PgiCTiZ5Tju8eL47J622byTman3DpO8gN1jKNkfKo si4w== X-Gm-Message-State: AOAM530DfM0SoFIYX29agfkGBumiMwvwLLK/uG8aQ9DGHrgNA+UfBsiA hJX964jDmwDPutj5tZNdtP0kmOKZF5nGEPXX X-Google-Smtp-Source: ABdhPJxynWb7wqlFy6QC0gm5nfnP6WnBNicJ+se29jxPHOlId/XBv2F0Mz8t6LxoqRp/A5xAtFRs1w== X-Received: by 2002:a17:906:b0b:: with SMTP id u11mr12224780ejg.458.1629819008212; Tue, 24 Aug 2021 08:30:08 -0700 (PDT) Received: from thibf-XPS-13-9380.fritz.box ([2a10:3781:1636:1:117e:a790:cac9:e365]) by smtp.googlemail.com with ESMTPSA id c6sm9420038eje.105.2021.08.24.08.30.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Aug 2021 08:30:07 -0700 (PDT) From: Thibault Ferrante X-Google-Original-From: Thibault Ferrante To: u-boot@lists.denx.de Cc: wd@denx.de, joe.hershberger@ni.com, hws@denx.de, alex.kiernan@gmail.com, lg@denx.de, Thibault Ferrante , =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= Subject: [PATCH 1/1] tools: env: Handle shorter read calls Date: Tue, 24 Aug 2021 17:29:50 +0200 Message-Id: <20210824152950.919452-2-thibault.ferrante@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210824152950.919452-1-thibault.ferrante@gmail.com> References: <20210824152950.919452-1-thibault.ferrante@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Wed, 25 Aug 2021 03:20:22 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean On some cases, the actual number of bytes read can be shorter than what was requested. This can be handled gracefully by taking this difference into account instead of exiting. Signed-off-by: Thibault Ferrante --- tools/env/fw_env.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c index 2a61a5d6f0..e39c39e23a 100644 --- a/tools/env/fw_env.c +++ b/tools/env/fw_env.c @@ -951,21 +951,23 @@ static int flash_read_buf(int dev, int fd, void *buf, size_t count, DEVNAME(dev), strerror(errno)); return -1; } - if (rc != readlen) { - fprintf(stderr, - "Read error on %s: Attempted to read %zd bytes but got %d\n", - DEVNAME(dev), readlen, rc); - return -1; - } #ifdef DEBUG fprintf(stderr, "Read 0x%x bytes at 0x%llx on %s\n", rc, (unsigned long long)blockstart + block_seek, DEVNAME(dev)); #endif - processed += readlen; - readlen = min(blocklen, count - processed); - block_seek = 0; - blockstart += blocklen; + processed += rc; + if (rc != readlen) { + fprintf(stderr, + "Warning on %s: Attempted to read %zd bytes but got %d\n", + DEVNAME(dev), readlen, rc); + readlen -= rc; + block_seek += rc; + } else { + blockstart += blocklen; + readlen = min(blocklen, count - processed); + block_seek = 0; + } } return processed; -- 2.25.1