From patchwork Tue Sep 24 13:11:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 1166579 X-Patchwork-Delegate: matthias.bgg@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="bzE7my1t"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46d1mS27xMz9sDB for ; Tue, 24 Sep 2019 23:11:36 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id F0C38C21E77; Tue, 24 Sep 2019 13:11:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 150E2C21D56; Tue, 24 Sep 2019 13:11:25 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id EEC27C21DD4; Tue, 24 Sep 2019 13:11:23 +0000 (UTC) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by lists.denx.de (Postfix) with ESMTPS id C6C3BC21C29 for ; Tue, 24 Sep 2019 13:11:21 +0000 (UTC) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20190924131120euoutp0286868caa3da19d7af5d792330a0676eb~HYfCFiEGt0931009310euoutp02y for ; Tue, 24 Sep 2019 13:11:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20190924131120euoutp0286868caa3da19d7af5d792330a0676eb~HYfCFiEGt0931009310euoutp02y DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1569330680; bh=xkzbukVVuSx2+P7Op58RIQ8sdiOYrHDvdbCqrelxt4E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bzE7my1tI2QQf56IQlqtVp75IkEZTZm8jaO4z5qO2UqshgpkTvo9A3VhZHTB6yIlr 3q94nuybyHXlaAmFQ74rQWW2iIZtmJ3bNTI6SUm8HmLDXOlWQgTu+VHoo1g14+t2/z vkbaPxL/JA4CNb2dcvlhg8tB0koMvhGfTaMjp6yA= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20190924131120eucas1p17b660a2005bf41e185b9abff73b18136~HYfB6hHe90343003430eucas1p1p; Tue, 24 Sep 2019 13:11:20 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 1E.2B.04309.8F51A8D5; Tue, 24 Sep 2019 14:11:20 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20190924131120eucas1p251e877771c864895a656cc8113cccb59~HYfBlesPC2933429334eucas1p2S; Tue, 24 Sep 2019 13:11:20 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20190924131120eusmtrp2da786207b2c4365295503520a273c4ab~HYfBkhekd1458114581eusmtrp2F; Tue, 24 Sep 2019 13:11:20 +0000 (GMT) X-AuditID: cbfec7f4-ae1ff700000010d5-ac-5d8a15f873ef Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id E0.5D.04166.8F51A8D5; Tue, 24 Sep 2019 14:11:20 +0100 (BST) Received: from AMDC2765.digital.local (unknown [106.120.51.73]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190924131119eusmtip2022bef1eeddd4fd5bdb8fe4abe957376~HYfBJZENL0422104221eusmtip2p; Tue, 24 Sep 2019 13:11:19 +0000 (GMT) From: Marek Szyprowski To: u-boot@lists.denx.de Date: Tue, 24 Sep 2019 15:11:06 +0200 Message-Id: <20190924131111.1691-2-m.szyprowski@samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190924131111.1691-1-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrPIsWRmVeSWpSXmKPExsWy7djPc7o/RLtiDX7/U7bYOGM9q8WNX22s Fs/fXWayWHvkLrvFgslPWC02zH/LYjFj8ks2i7d7O9kdODzmzTrB4nH2zg5Gj74tqxg91m+5 yuKx6ZVHAGsUl01Kak5mWWqRvl0CV8aHTZ3sBWd5K870fmRvYGzg7mLk5JAQMJGYO2kJM4gt JLCCUWLVltIuRi4g+wujxKkTh9khEp8ZJVY+kYZpuPH+IDtE0XJGiTlz5rHAdZydPBVsFJuA oUTX2y42EFtEQELiV/9VRpAiZoHtTBLtrddZQBLCAh4Suy+3MYLYLAKqEhe6b4Ct4xWwkfjX P4kJYp28xOoNB8CGcgrYShy/fIgVZJCEwHc2iVWf1gIVcQA5LhIrW4Qg6oUlXh3fwg5hy0j8 3zmfCaK+mVHi4bm17BBOD6PE5aYZjBBV1hKHj19kBRnELKApsX6XPsRMR4lHveEQJp/EjbeC IMXMQOakbdOZIcK8Eh1tUFvVJGYdXwe39eCFS8wQtofEm7vrWSHhM4FRYsr0F2wTGOVnIexa wMi4ilE8tbQ4Nz212CgvtVyvODG3uDQvXS85P3cTIzBZnP53/MsOxl1/kg4xCnAwKvHwOrB2 xQqxJpYVV+YeYpTgYFYS4d2k1RYrxJuSWFmVWpQfX1Sak1p8iFGag0VJnLea4UG0kEB6Yklq dmpqQWoRTJaJg1OqgVEv7M/pib66+0V1VkfLPm67cO05687Te5jEj09bsv7y7g0sZqld89eL /rHw9/Xk2dnvnXjRTetKw27R6PhdyX8EtvRy7058Oyk5fPKVr9XBuz/mG/+LyAy5pjMlIPP1 5H+c28S4eA+1lv30fsg79fZdq91dOeL351lVbjx7/dFXE8Wm48vlzZ8rsRRnJBpqMRcVJwIA fQGVjBIDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMLMWRmVeSWpSXmKPExsVy+t/xe7o/RLtiDbpX8FtsnLGe1eLGrzZW i+fvLjNZrD1yl91iweQnrBYb5r9lsZgx+SWbxdu9newOHB7zZp1g8Th7ZwejR9+WVYwe67dc ZfHY9MojgDVKz6Yov7QkVSEjv7jEVina0MJIz9DSQs/IxFLP0Ng81srIVEnfziYlNSezLLVI 3y5BL+PDpk72grO8FWd6P7I3MDZwdzFyckgImEjceH+QvYuRi0NIYCmjxOlJ25ggEjISJ6c1 sELYwhJ/rnWxQRR9YpSY+/ApO0iCTcBQoustSIKTQ0RAQuJX/1VGkCJmgd1MEtdXHWMESQgL eEjsvtwGZrMIqEpc6L4B1swrYCPxr38S1DZ5idUbDjCD2JwCthLHLx8C2ywEVDP7yGu2CYx8 CxgZVjGKpJYW56bnFhvqFSfmFpfmpesl5+duYgQG8LZjPzfvYLy0MfgQowAHoxIPrwNrV6wQ a2JZcWXuIUYJDmYlEd5NWm2xQrwpiZVVqUX58UWlOanFhxhNgY6ayCwlmpwPjK68knhDU0Nz C0tDc2NzYzMLJXHeDoGDMUIC6YklqdmpqQWpRTB9TBycUg2Mxu3KNz1FUqcfsQ1aEdFwW3ma 4OSelHU2x+ybLtw+x3eqV2ZO+KXUv7N7/v95wqBz8MStz2IHngrKc3wvD3QMSPUJ/naq7LDC nPm9jc+EA19E3bpv/uSrf/qMUv5TW+6v1JjxZHHhVB72CaFq3jv8dhqLyph/+Gj69prg+7mT 2i8dlvzy6+1aMSWW4oxEQy3mouJEAC2liCt2AgAA X-CMS-MailID: 20190924131120eucas1p251e877771c864895a656cc8113cccb59 X-Msg-Generator: CA X-RootMTR: 20190924131120eucas1p251e877771c864895a656cc8113cccb59 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20190924131120eucas1p251e877771c864895a656cc8113cccb59 References: <20190924131111.1691-1-m.szyprowski@samsung.com> Cc: Matthias Brugger , Bartlomiej Zolnierkiewicz , Marek Szyprowski Subject: [U-Boot] [PATCH v2 1/6] fat: write: fix broken write to fragmented files X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The code for handing file overwrite incorrectly assumed that the file on disk is always contiguous. This resulted in corrupting disk structure every time when write to existing fragmented file happened. Fix this by adding proper check for cluster discontinuity and adjust chunk size on each partial write. Signed-off-by: Marek Szyprowski Reviewed-by: Oleksandr Suvorov Reviewed-by: Lukasz Majewski --- fs/fat/fat_write.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index 729cf39630..6cfa5b4565 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -794,6 +794,8 @@ set_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos, __u8 *buffer, newclust = get_fatent(mydata, endclust); + if ((newclust - 1) != endclust) + break; if (IS_LAST_CLUST(newclust, mydata->fatsize)) break; if (CHECK_CLUST(newclust, mydata->fatsize)) { @@ -811,7 +813,7 @@ set_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos, __u8 *buffer, offset = 0; else offset = pos - cur_pos; - wsize = min(cur_pos + actsize, filesize) - pos; + wsize = min_t(unsigned long long, actsize, filesize - cur_pos); if (get_set_cluster(mydata, curclust, offset, buffer, wsize, &actsize)) { printf("Error get-and-setting cluster\n"); @@ -824,8 +826,6 @@ set_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos, __u8 *buffer, if (filesize <= cur_pos) break; - /* CHECK: newclust = get_fatent(mydata, endclust); */ - if (IS_LAST_CLUST(newclust, mydata->fatsize)) /* no more clusters */ break;