Re: + maple-tree-add-new-data-structure-fix-3.patch added to mm-unstable branch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Andrew,

Please ignore my previous email.
It was another bug context.

This patch has been applied and tested
LTP sched test cases on x86 and the reported bug fixed.

> From: Liam Howlett <liam.howlett@xxxxxxxxxx>
> Subject: maple_tree: fix 32b parent pointers
> Date: Tue, 17 May 2022 15:22:20 +0000
>
> 32 bit parent pointers need an extra bit to account for increased slot
> count.  Update the constants and documentation to use the remaining high
> bit.
>
> Link: https://lkml.kernel.org/r/20220517152209.3486724-1-Liam.Howlett@xxxxxxxxxx
> Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
> Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
> Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>

Tested-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>

> ---
>
>  include/linux/maple_tree.h |    2 +-
>  lib/maple_tree.c           |   14 +++++++-------
>  2 files changed, 8 insertions(+), 8 deletions(-)
>
> --- a/include/linux/maple_tree.h~maple-tree-add-new-data-structure-fix-3
> +++ a/include/linux/maple_tree.h
> @@ -37,7 +37,7 @@
>  #define MAPLE_NODE_SLOTS       63      /* 256 bytes including ->parent */
>  #define MAPLE_RANGE64_SLOTS    32      /* 256 bytes */
>  #define MAPLE_ARANGE64_SLOTS   21      /* 240 bytes */
> -#define MAPLE_ARANGE64_META_MAX        22      /* Out of range for metadata */
> +#define MAPLE_ARANGE64_META_MAX        31      /* Out of range for metadata */
>  #define MAPLE_ALLOC_SLOTS      (MAPLE_NODE_SLOTS - 2)
>  #endif /* defined(CONFIG_64BIT) || defined(BUILD_VDSO32_64) */
>
> --- a/lib/maple_tree.c~maple-tree-add-new-data-structure-fix-3
> +++ a/lib/maple_tree.c
> @@ -354,7 +354,7 @@ static inline bool mt_is_alloc(struct ma
>  /*
>   * The Parent Pointer
>   * Excluding root, the parent pointer is 256B aligned like all other tree nodes.
> - * When storing a 32 or 64 bit values, the offset can fit into 4 bits.  The 16
> + * When storing a 32 or 64 bit values, the offset can fit into 5 bits.  The 16
>   * bit values need an extra bit to store the offset.  This extra bit comes from
>   * a reuse of the last bit in the node type.  This is possible by using bit 1 to
>   * indicate if bit 2 is part of the type or the slot.
> @@ -366,19 +366,19 @@ static inline bool mt_is_alloc(struct ma
>   *  0x110 = 64 bit nodes
>   *
>   * Slot size and alignment
> - *  0x??1 : Root
> - *  0x?00 : 16 bit values, type in 0-1, slot in 2-6
> - *  0x010 : 32 bit values, type in 0-2, slot in 3-6
> - *  0x110 : 64 bit values, type in 0-2, slot in 3-6
> + *  0b??1 : Root
> + *  0b?00 : 16 bit values, type in 0-1, slot in 2-7
> + *  0b010 : 32 bit values, type in 0-2, slot in 3-7
> + *  0b110 : 64 bit values, type in 0-2, slot in 3-7
>   */
>
>  #define MAPLE_PARENT_ROOT              0x01
>
>  #define MAPLE_PARENT_SLOT_SHIFT                0x03
> -#define MAPLE_PARENT_SLOT_MASK         0x78
> +#define MAPLE_PARENT_SLOT_MASK         0xF8
>
>  #define MAPLE_PARENT_16B_SLOT_SHIFT    0x02
> -#define MAPLE_PARENT_16B_SLOT_MASK     0x7C
> +#define MAPLE_PARENT_16B_SLOT_MASK     0xFC
>
>  #define MAPLE_PARENT_RANGE64           0x06
>  #define MAPLE_PARENT_RANGE32           0x04
> _
>
> Patches currently in -mm which might be from liam.howlett@xxxxxxxxxx are
>
> maple-tree-add-new-data-structure-fix.patch
> maple-tree-add-new-data-structure-fix-2.patch
> maple-tree-add-new-data-structure-fix-3.patch
> lib-test_maple_tree-add-testing-for-maple-tree-fix.patch
> mm-start-tracking-vmas-with-maple-tree-fix-2.patch
> mm-remove-the-vma-linked-list-fix.patch
>



[Index of Archives]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux