fs: exfat: Flush node before put in read() callback
authorMarek Vasut <marex@denx.de>
Sun, 13 Apr 2025 08:54:59 +0000 (10:54 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 21 Apr 2025 17:07:04 +0000 (11:07 -0600)
Make sure the node is never dirty before being released, flush
the node first using exfat_flush_node() and only then release
the node using exfat_put_node(). This now matches the behavior
of exfat_fs_write() too.

Fixes: b86a651b646c ("fs: exfat: Add U-Boot porting layer")
Signed-off-by: Marek Vasut <marex@denx.de>
fs/exfat/io.c

index 81e8282..12498a4 100644 (file)
@@ -898,9 +898,7 @@ int exfat_fs_read(const char *filename, void *buf, loff_t offset, loff_t len,
 
        *actread = sz;
 
-       exfat_put_node(&ctxt.ef, node);
-
-       return exfat_flush_node(&ctxt.ef, node);
+       err = exfat_flush_node(&ctxt.ef, node);
 exit:
        exfat_put_node(&ctxt.ef, node);
        return err;