e2fsprogs: Use 32-bit variant of ext2fs_swab to read i_projid

Message ID 20180523032207.13773-1-chandan@linux.vnet.ibm.com
State Accepted, archived
Headers show
Series
  • e2fsprogs: Use 32-bit variant of ext2fs_swab to read i_projid
Related show

Commit Message

Chandan Rajendra May 23, 2018, 3:22 a.m.
i_projid is a 32-bit field of the inode. Hence this commit uses
ext2fs_swab32() to convert the i_projid field from the on-disk little
endian format to the host cpu format. Without this change, project quota
consistency check used to fail on big endian powerpc systems.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 lib/ext2fs/swapfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Andreas Dilger May 23, 2018, 6:08 p.m. | #1
On May 22, 2018, at 9:22 PM, Chandan Rajendra <chandan@linux.vnet.ibm.com> wrote:
> 
> i_projid is a 32-bit field of the inode. Hence this commit uses
> ext2fs_swab32() to convert the i_projid field from the on-disk little
> endian format to the host cpu format. Without this change, project quota
> consistency check used to fail on big endian powerpc systems.
> 
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>

Reviewed-by: Andreas Dilger <adilger@dilger.ca>

> ---
> lib/ext2fs/swapfs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c
> index 0cf5f9a..b168a2f 100644
> --- a/lib/ext2fs/swapfs.c
> +++ b/lib/ext2fs/swapfs.c
> @@ -357,7 +357,7 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct ext2_inode_large *t,
> 	if (inode_includes(inode_size, i_version_hi))
> 		t->i_version_hi = ext2fs_swab32(f->i_version_hi);
> 	if (inode_includes(inode_size, i_projid))
> -                t->i_projid = ext2fs_swab16(f->i_projid);
> +                t->i_projid = ext2fs_swab32(f->i_projid);
> 	/* catch new static fields added after i_projid */
> 	EXT2FS_BUILD_BUG_ON(sizeof(struct ext2_inode_large) != 160);
> 
> --
> 2.9.5
> 


Cheers, Andreas
Theodore Y. Ts'o May 24, 2018, 9:32 p.m. | #2
On Wed, May 23, 2018 at 08:52:07AM +0530, Chandan Rajendra wrote:
> i_projid is a 32-bit field of the inode. Hence this commit uses
> ext2fs_swab32() to convert the i_projid field from the on-disk little
> endian format to the host cpu format. Without this change, project quota
> consistency check used to fail on big endian powerpc systems.
> 
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>

Applied, thanks.

					- Ted

Patch

diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c
index 0cf5f9a..b168a2f 100644
--- a/lib/ext2fs/swapfs.c
+++ b/lib/ext2fs/swapfs.c
@@ -357,7 +357,7 @@  void ext2fs_swap_inode_full(ext2_filsys fs, struct ext2_inode_large *t,
 	if (inode_includes(inode_size, i_version_hi))
 		t->i_version_hi = ext2fs_swab32(f->i_version_hi);
 	if (inode_includes(inode_size, i_projid))
-                t->i_projid = ext2fs_swab16(f->i_projid);
+                t->i_projid = ext2fs_swab32(f->i_projid);
 	/* catch new static fields added after i_projid */
 	EXT2FS_BUILD_BUG_ON(sizeof(struct ext2_inode_large) != 160);