From: Sweet Tea Dorminy <[email protected]>

This recapitulates the kernel change named 'btrfs: start tracking extent
encryption context info".

Signed-off-by: Sweet Tea Dorminy <[email protected]>
Signed-off-by: Daniel Vacek <[email protected]>
---
 kernel-shared/tree-checker.c    | 17 ++++++++++-------
 kernel-shared/uapi/btrfs_tree.h |  6 ++++++
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/kernel-shared/tree-checker.c b/kernel-shared/tree-checker.c
index 5e716422..cd3d5d27 100644
--- a/kernel-shared/tree-checker.c
+++ b/kernel-shared/tree-checker.c
@@ -239,6 +239,8 @@ static int check_extent_data_item(struct extent_buffer 
*leaf,
        u32 sectorsize = fs_info->sectorsize;
        u32 item_size = btrfs_item_size(leaf, slot);
        u64 extent_end;
+       u8 policy;
+       u8 fe_type;
 
        if (unlikely(!IS_ALIGNED(key->offset, sectorsize))) {
                file_extent_err(leaf, slot,
@@ -269,12 +271,12 @@ static int check_extent_data_item(struct extent_buffer 
*leaf,
                                SZ_4K);
                return -EUCLEAN;
        }
-       if (unlikely(btrfs_file_extent_type(leaf, fi) >=
-                    BTRFS_NR_FILE_EXTENT_TYPES)) {
+
+       fe_type = btrfs_file_extent_type(leaf, fi);
+       if (unlikely(fe_type >= BTRFS_NR_FILE_EXTENT_TYPES)) {
                file_extent_err(leaf, slot,
                "invalid type for file extent, have %u expect range [0, %u]",
-                       btrfs_file_extent_type(leaf, fi),
-                       BTRFS_NR_FILE_EXTENT_TYPES - 1);
+                       fe_type, BTRFS_NR_FILE_EXTENT_TYPES - 1);
                return -EUCLEAN;
        }
 
@@ -290,10 +292,11 @@ static int check_extent_data_item(struct extent_buffer 
*leaf,
                        BTRFS_NR_COMPRESS_TYPES - 1);
                return -EUCLEAN;
        }
-       if (unlikely(btrfs_file_extent_encryption(leaf, fi))) {
+       policy = btrfs_file_extent_encryption(leaf, fi);
+       if (unlikely(policy >= BTRFS_NR_ENCRYPTION_TYPES)) {
                file_extent_err(leaf, slot,
-                       "invalid encryption for file extent, have %u expect 0",
-                       btrfs_file_extent_encryption(leaf, fi));
+                       "invalid encryption for file extent, have %u expect 
range [0, %u]",
+                       policy, BTRFS_NR_ENCRYPTION_TYPES - 1);
                return -EUCLEAN;
        }
        if (btrfs_file_extent_type(leaf, fi) == BTRFS_FILE_EXTENT_INLINE) {
diff --git a/kernel-shared/uapi/btrfs_tree.h b/kernel-shared/uapi/btrfs_tree.h
index 1ca63711..74d307f1 100644
--- a/kernel-shared/uapi/btrfs_tree.h
+++ b/kernel-shared/uapi/btrfs_tree.h
@@ -1072,6 +1072,12 @@ enum {
        BTRFS_NR_FILE_EXTENT_TYPES = 3,
 };
 
+enum {
+       BTRFS_ENCRYPTION_NONE,
+       BTRFS_ENCRYPTION_FSCRYPT,
+       BTRFS_NR_ENCRYPTION_TYPES,
+};
+
 struct btrfs_file_extent_item {
        /*
         * transaction id that created this extent
-- 
2.53.0


Reply via email to