Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
exfatprogs.30205
0003-fsck-fix-return-value-of-check_inode.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0003-fsck-fix-return-value-of-check_inode.patch of Package exfatprogs.30205
From 38f74dc623a2c429b19b32d250640ae9b1e4da46 Mon Sep 17 00:00:00 2001 From: Hyunchul Lee <hyc.lee@gmail.com> Date: Mon, 24 Aug 2020 16:10:45 +0900 Subject: [PATCH 3/9] fsck: fix return value of check_inode even if files cannot be repaired, check_inode could return the value which means files are valid. Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com> (cherry picked from commit ea3ca90b53ea6c370fda7f893b3ac061a041aa50) Acked-by: David Disseldorp <ddiss@suse.de> --- fsck/fsck.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fsck/fsck.c b/fsck/fsck.c index 981d6ab..3618b0d 100644 --- a/fsck/fsck.c +++ b/fsck/fsck.c @@ -829,6 +829,7 @@ static int check_inode(struct exfat_de_iter *iter, struct exfat_inode *node) struct exfat_dentry *dentry; int ret = 0; uint16_t checksum; + bool valid = true; ret = check_clus_chain(exfat, node); if (ret < 0) @@ -839,7 +840,7 @@ static int check_inode(struct exfat_de_iter *iter, struct exfat_inode *node) fsck_err(iter->parent, node, "size %" PRIu64 " is greater than cluster heap\n", node->size); - ret = -EINVAL; + valid = false; } if (node->size == 0 && node->is_contiguous) { @@ -849,7 +850,7 @@ static int check_inode(struct exfat_de_iter *iter, struct exfat_inode *node) dentry->stream_flags &= ~EXFAT_SF_CONTIGUOUS; ret = 1; } else - ret = -EINVAL; + valid = false; } if ((node->attr & ATTR_SUBDIR) && @@ -857,7 +858,7 @@ static int check_inode(struct exfat_de_iter *iter, struct exfat_inode *node) fsck_err(iter->parent, node, "directory size %" PRIu64 " is not divisible by %d\n", node->size, exfat->clus_size); - ret = -EINVAL; + valid = false; } checksum = file_calc_checksum(iter); @@ -869,10 +870,10 @@ static int check_inode(struct exfat_de_iter *iter, struct exfat_inode *node) dentry->file_checksum = cpu_to_le16(checksum); ret = 1; } else - ret = -EINVAL; + valid = false; } - return ret; + return valid ? ret : -EINVAL; } static int read_file_dentries(struct exfat_de_iter *iter, -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor