[PATCH -tip] x86/fpu: Shrink space allocated for xstate_comp_offsets

From: Cyrill Gorcunov
Date: Fri Nov 01 2019 - 08:42:41 EST


In the commit 8ff925e10f2c72680918b95173ef4f8bb982d59e up to 64 entries
are allocated for xstate_comp_offsets while we only handle XFEATURE_MAX
entries. For this reason xstate_offsets and xstate_sizes already defined
with the explicit limit. Lets do the same for compressed format for
consistency sake.

Actually I guess the main idea was to cover all possible bits in
xfeatures_mask but this doesn't explain why other members such as
standart offsets and sizes were not using the same. So I think better
to use known XFEATURE_MAX limit everywhere and extend it on demand
when new features get implemented on hardware level.

Signed-off-by: Cyrill Gorcunov <gorcunov@xxxxxxxxx>
CC: Ingo Molnar <mingo@xxxxxxxxxx>
CC: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
CC: H. Peter Anvin <hpa@xxxxxxxxx>
---
arch/x86/kernel/fpu/xstate.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Index: linux-tip.git/arch/x86/kernel/fpu/xstate.c
===================================================================
--- linux-tip.git.orig/arch/x86/kernel/fpu/xstate.c
+++ linux-tip.git/arch/x86/kernel/fpu/xstate.c
@@ -60,7 +60,7 @@ u64 xfeatures_mask __read_mostly;

static unsigned int xstate_offsets[XFEATURE_MAX] = { [ 0 ... XFEATURE_MAX - 1] = -1};
static unsigned int xstate_sizes[XFEATURE_MAX] = { [ 0 ... XFEATURE_MAX - 1] = -1};
-static unsigned int xstate_comp_offsets[sizeof(xfeatures_mask)*8];
+static unsigned int xstate_comp_offsets[XFEATURE_MAX] = { [ 0 ... XFEATURE_MAX - 1] = -1};

/*
* The XSAVE area of kernel can be in standard or compacted format;
@@ -342,7 +342,7 @@ static int xfeature_is_aligned(int xfeat
*/
static void __init setup_xstate_comp(void)
{
- unsigned int xstate_comp_sizes[sizeof(xfeatures_mask)*8];
+ unsigned int xstate_comp_sizes[XFEATURE_MAX];
int i;

/*