Thread (4 messages) 4 messages, 3 authors, 2018-02-21

Re: [PATCH] xfs: Remove duplicated check

From: Nikolay Borisov <hidden>
Date: 2018-02-21 06:30:24


On 20.02.2018 23:11, Dave Chinner wrote:
On Tue, Feb 20, 2018 at 03:53:02PM +0200, Nikolay Borisov wrote:
quoted
The check performed before the memcpy responsible for copying the rest
of the inode is already performed before we call xfs_log_dinode_to_disk.
So let's remove the 2nd instance of the check. No functional changes.

Signed-off-by: Nikolay Borisov <redacted>
Reported-by: Jeff Mahoney <redacted>
---
 fs/xfs/xfs_log_recover.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 00240c9ee72e..88dccfb1de96 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -3174,11 +3174,8 @@ xlog_recover_inode_pass2(
 	xfs_log_dinode_to_disk(ldip, dip);
 
 	/* the rest is in on-disk format */
-	if (item->ri_buf[1].i_len > isize) {
-		memcpy((char *)dip + isize,
-			item->ri_buf[1].i_addr + isize,
+	memcpy((char *)dip + isize, item->ri_buf[1].i_addr + isize,
 			item->ri_buf[1].i_len - isize);
-	}
 
This looks wrong.

The previous check is:

	if (unlikely(item->ri_buf[1].i_len > isize)) {
		CORRUPTION_ERROR
		....
		error = -EFSCORRUPTED;
		goto out_release;
	}

So after this item->ri_buf[1].i_len is always <= isize. IOWs, the
memcpy() is currently dead code that is never executed, not code we
want to execute in every inode recovery.
Doh, you are right, will resend.
Cheers,

Dave.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help