Added two upstream mailing list patches that fix behavior under big endian systems. Issue was present since version 1.11.0. Tested on Turris Omnia. Original discussion: https://github.com/openwrt/openwrt/pull/1575 Signed-off-by: Rosen Penev <rosenp@gmail.com>
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 46772bbf0d978512423923da461ceb6b6e791c91 Mon Sep 17 00:00:00 2001
 | 
						|
From: Rosen Penev <rosenp@gmail.com>
 | 
						|
Date: Fri, 7 Dec 2018 17:39:03 -0800
 | 
						|
Subject: [PATCH] fsck: Fix big endian platforms
 | 
						|
 | 
						|
Since "fsck.f2fs: integrate sanity_check_inode to __check_inode_mode",
 | 
						|
big endian platforms have been broken due to an endianness bug.
 | 
						|
 | 
						|
More info: https://github.com/openwrt/openwrt/pull/1575
 | 
						|
 | 
						|
Signed-off-by: Rosen Penev <rosenp@gmail.com>
 | 
						|
---
 | 
						|
 fsck/fsck.c | 4 ++--
 | 
						|
 1 file changed, 2 insertions(+), 2 deletions(-)
 | 
						|
 | 
						|
--- a/fsck/fsck.c
 | 
						|
+++ b/fsck/fsck.c
 | 
						|
@@ -339,7 +339,7 @@ out:
 | 
						|
 	return ret;
 | 
						|
 }
 | 
						|
 
 | 
						|
-static int __check_inode_mode(u32 nid, enum FILE_TYPE ftype, u32 mode)
 | 
						|
+static int __check_inode_mode(u32 nid, enum FILE_TYPE ftype, u16 mode)
 | 
						|
 {
 | 
						|
 	if (ftype >= F2FS_FT_MAX)
 | 
						|
 		return 0;
 | 
						|
@@ -457,7 +457,7 @@ static int sanity_check_nid(struct f2fs_
 | 
						|
 		return 0;
 | 
						|
 
 | 
						|
 	if (ntype == TYPE_INODE &&
 | 
						|
-		__check_inode_mode(nid, ftype, le32_to_cpu(node_blk->i.i_mode)))
 | 
						|
+		__check_inode_mode(nid, ftype, le16_to_cpu(node_blk->i.i_mode)))
 | 
						|
 		return -EINVAL;
 | 
						|
 
 | 
						|
 	/* workaround to fix later */
 |