KVM: x86: avoid large stack allocations in em_fxrstor
authorNick Desaulniers <nick.desaulniers@gmail.com>
Wed, 31 May 2017 03:08:38 +0000 (20:08 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 1 Jun 2017 09:23:12 +0000 (11:23 +0200)
commit9d643f63128bcec2b845fd0719a6b971b68c59cc
treecf7e7a41e34f85446d6a66c73dcbb5965b48cea3
parent7461fbc46e9078d3143d396e2ad1c0c5bfd07b6f
KVM: x86: avoid large stack allocations in em_fxrstor

em_fxstor previously called fxstor_fixup.  Both created instances of
struct fxregs_state on the stack, which triggered the warning:

arch/x86/kvm/emulate.c:4018:12: warning: stack frame size of 1080 bytes
in function
      'em_fxrstor' [-Wframe-larger-than=]
static int em_fxrstor(struct x86_emulate_ctxt *ctxt)
           ^
with CONFIG_FRAME_WARN set to 1024.

This patch does the fixup in em_fxstor now, avoiding one additional
struct fxregs_state, and now fxstor_fixup can be removed as it has no
other call sites.

Further, the calculation for offsets into xmm_space can be shared
between em_fxstor and em_fxsave.

Signed-off-by: Nick Desaulniers <nick.desaulniers@gmail.com>
[Clean up calculation of offsets and fix it for 64-bit mode. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/emulate.c