From patchwork Tue Jul 12 22:33:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1655691 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=Rb2o2pX1; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4LjFsN4WByz9ryY for ; Wed, 13 Jul 2022 08:33:44 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8BF34841E9; Wed, 13 Jul 2022 00:33:30 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="Rb2o2pX1"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E0122841DD; Wed, 13 Jul 2022 00:33:24 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 2A0438415E for ; Wed, 13 Jul 2022 00:33:22 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1657665200; bh=Y8rHqH7SlYPEPf7BkdiNXMqVUEARweay/arumKiYp44=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Rb2o2pX1+VAUCgWh5bcuhpS0F02sBUeBOMXWY+L3XhoksKskgPiS4iScXbHayFWj2 Hl7+SacrV9ELaPFaENw7XvRW8k4YPPIcUXQGSLovJt+YeumiO4XVInrQGIZS87SvV7 r8jFiYm1oEk971l6QJI6sWS6UsETD0Xp33vA+UwI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from rpi3.fritz.box ([62.143.94.109]) by mail.gmx.net (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MXGvG-1o47qw2Hss-00YfOv; Wed, 13 Jul 2022 00:33:20 +0200 From: Heinrich Schuchardt To: Tom Rini Cc: AKASHI Takahiro , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH 2/3] fs: fat: determine_fatent() error handling Date: Tue, 12 Jul 2022 22:33:13 +0000 Message-Id: <20220712223314.20530-3-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220712223314.20530-1-xypron.glpk@gmx.de> References: <20220712223314.20530-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:y9iACwd+8ffC44/d9zex565ZpkOa0UUcnJ5vSAPrs+CbGo/8HtB Mt/PUW2BWaYp4UNy5HY7lHZo5zuKjhzh9af+oLeynm1wDHlR9syAG4AvmRBx39wabrZFcLT LUzhXxZ6MzH6Pv2gEmgKxGV1i8BOSr7IdKDyZKb1zU9j/1tjTKLx2/X9mvP1Sdll3bXmKPN S2KkeYW+Z2m36xLDDir8g== X-UI-Out-Filterresults: notjunk:1;V03:K0:IuTlq5/dtek=:aLfKqbK8ATSqIT7d3pz2Et QoiOqnCCHiI7D22JPpYb9Nb0bf6h3ZIid54cykXn4cfNUFfYvN0gWqYrfgkCN/qcfnuuEKk2a hCXVf4a2kTdNMZIQQHNrZBcZ2AqzqdXOjnWCDCQLhxpHECft7WYaj1/MTF3IE68p5YkfBXgeP vYLZP0GRYd+MxyeLlT+iBrDefJVGKFFi+cF8nCC3kwgdcZWlA/2xDhlhWKME6e2NENw1focBp rg5fXI5WPkZdf0I5I9PdPgSi0koxnq5Ianmqv/usDuZUalOJRstfaUdy45w1WtkSxK8PXCKSM FsdumLTWFtczO0pWO5ykQ1PBvSy6cnjb5FGZMvfC2LtrGO4IDwLDOllkJ5Rs20eCDmVjjq5Oq G+Tl1O66FUasZ67FOpPR6qfvNJdPUqJRFhCkhGNJFZhMAKcZEFVtQpt26ewDfpfiBM/FH6iSJ 3un7+Ha+aiX8i+zT1zc/+Q5jx9CMD1XvFvmQMTZTjExusiFBC1JHPesRK67CPMghpoh/zBRTK w721f77jRIqA3Fwwojcu8vte1CYW9kfFo4MPGxaRJPpesjf+4dTXgEQAxp4mgceThVFSzoTSw b0vuEWxBNMyf7MI9HDJWewS0mMrAP0JIAxOxNVQvU9CobRGwDrj2OS1Aux3jBqEdVSAKYj8PJ 94hPbVi6vreB20XWPwwhbARDSRN8re+xsdF2qRebOajFT1M9Y9IDyCfXMgoF3qW/wpZEv7c/A 3KZxcnNGzQowxbjF0mJsrkRV91u8gcW+1eCi6lpnc/i04RPHjP0thjbcemOnWAjbHqV93QHEZ 0WxvKR3Kdls60INuoIzVQ/uF1aeON1oxVnKHTpEXquSTO+9akfC5PfKBAcU7BT0sqGAVhfd/u un6HqG7nBuSn4EiQkYmO81wl6lmvEVX7s6xp7zvLdjUz14k/DfvgMXb04QK5W8UUHGpMvsuP6 OZ6KnE++YofUWFzakvEglGBEn7L0tBAES0SEd9LcoJ8jBh5rumXM/uCszZPbNlril41wPay3e 5VSSiIBnyyaQT4xUXqCa8vifzKp3kfJVXphSjVbK2QX7PPuLvgNojFuSihJ4uAuww9476go8d AjOgykDrSh+8ZvXJkHrIMnOfujwetXdAvDFO/dBqX0/P6kkOAVaqorclQ== X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.6 at phobos.denx.de X-Virus-Status: Clean Handle disk full errors. Signed-off-by: Heinrich Schuchardt --- fs/fat/fat_write.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) -- 2.30.2 diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index a137e14f41..57522f96a8 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -827,6 +827,8 @@ static int new_dir_table(fat_itr *itr) unsigned int bytesperclust = mydata->clust_size * mydata->sect_size; dir_newclust = determine_fatent(mydata, 0); + if (dir_newclust < 0) + return dir_newclust; /* * Flush before updating FAT to ensure valid directory structure @@ -927,8 +929,8 @@ set_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos, __u8 *buffer, loff_t maxsize, loff_t *gotsize) { unsigned int bytesperclust = mydata->clust_size * mydata->sect_size; - __u32 curclust = START(dentptr); - __u32 endclust = 0, newclust = 0; + int curclust = START(dentptr); + int endclust = 0, newclust = 0; u64 cur_pos, filesize; loff_t offset, actsize, wsize; @@ -1069,12 +1071,16 @@ set_clusters: /* Assure that curclust is valid */ if (!curclust) { curclust = determine_fatent(mydata, 0); + if (curclust < 0) + return -1; set_start_cluster(mydata, dentptr, curclust); } else { newclust = get_fatent(mydata, curclust); if (IS_LAST_CLUST(newclust, mydata->fatsize)) { newclust = determine_fatent(mydata, curclust); + if (newclust < 0) + return -1; set_fatent_value(mydata, curclust, newclust); curclust = newclust; } else { @@ -1095,6 +1101,8 @@ set_clusters: /* search for consecutive clusters */ while (actsize < filesize) { newclust = determine_fatent(mydata, endclust); + if (newclust < 0) + return -1; if ((newclust - 1) != endclust) /* write to */