From 7cd2459c73307dc6245c9b0e3046215a76a44553 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Wed, 21 Jun 2017 22:00:17 -0400 Subject: [PATCH] add patch add-missing-le32-conversions --- add-missing-le32-conversions | 51 ++++++++++++++++++++++++++++++++++++++++++++ series | 1 + timestamps | 7 +++--- 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 add-missing-le32-conversions diff --git a/add-missing-le32-conversions b/add-missing-le32-conversions new file mode 100644 index 00000000..c62dabf1 --- /dev/null +++ b/add-missing-le32-conversions @@ -0,0 +1,51 @@ +ext4: add missing le32_to_cpu(e_value_inum) conversions + +From: Tahsin Erdogan + +Two places in code missed converting xattr inode number using +le32_to_cpu(). + +Signed-off-by: Tahsin Erdogan +Signed-off-by: Theodore Ts'o +--- + fs/ext4/xattr.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c +index 8e855fc2eb03..4dd8be16d175 100644 +--- a/fs/ext4/xattr.c ++++ b/fs/ext4/xattr.c +@@ -1997,6 +1997,7 @@ ext4_xattr_delete_inode(handle_t *handle, struct inode *inode, + struct ext4_inode *raw_inode; + struct ext4_iloc iloc; + struct ext4_xattr_entry *entry; ++ unsigned int ea_ino; + int credits = 3, error = 0; + + if (!ext4_test_inode_state(inode, EXT4_STATE_XATTR)) +@@ -2011,8 +2012,8 @@ ext4_xattr_delete_inode(handle_t *handle, struct inode *inode, + entry = EXT4_XATTR_NEXT(entry)) { + if (!entry->e_value_inum) + continue; +- if (ext4_expand_ino_array(lea_ino_array, +- entry->e_value_inum) != 0) { ++ ea_ino = le32_to_cpu(entry->e_value_inum); ++ if (ext4_expand_ino_array(lea_ino_array, ea_ino) != 0) { + brelse(iloc.bh); + goto cleanup; + } +@@ -2044,8 +2045,8 @@ ext4_xattr_delete_inode(handle_t *handle, struct inode *inode, + entry = EXT4_XATTR_NEXT(entry)) { + if (!entry->e_value_inum) + continue; +- if (ext4_expand_ino_array(lea_ino_array, +- entry->e_value_inum) != 0) ++ ea_ino = le32_to_cpu(entry->e_value_inum); ++ if (ext4_expand_ino_array(lea_ino_array, ea_ino) != 0) + goto cleanup; + entry->e_value_inum = 0; + } +-- +2.13.1.611.g7e3b11ae1-goog + + diff --git a/series b/series index aa0582cf..d27bed51 100644 --- a/series +++ b/series @@ -13,6 +13,7 @@ fix-ref-counting-for-ea_inode extended-attribute-value-size-limit-is-enforced-by-vfs change-ext4_xattr_inode_iget_signature clean-up-ext4_xattr_inode_get +add-missing-le32-conversions #################################################### # unstable patches diff --git a/timestamps b/timestamps index cb47419c..583d8e87 100755 --- a/timestamps +++ b/timestamps @@ -44,7 +44,8 @@ touch -d @1498095411 call-journal-revoke-when-freeing-ea_inode-blocks touch -d @1498095578 fix-ref-counting-for-ea_inode touch -d @1498095697 extended-attribute-value-size-limit-is-enforced-by-vfs touch -d @1498096193 change-ext4_xattr_inode_iget_signature -touch -d @1498096237 timestamps touch -d @1498096656 clean-up-ext4_xattr_inode_get -touch -d @1498096668 series -touch -d @1498096677 status +touch -d @1498096770 add-missing-le32-conversions +touch -d @1498096795 series +touch -d @1498096803 status +touch -d @1498096809 timestamps -- 2.11.4.GIT