Messages in this thread | | | From | Roland Dreier <> | Subject | Re: KVM overflows the stack | Date | Wed, 16 Jul 2008 23:08:01 -0700 |
| |
> Yes, things like kvm_lapic_state are way too big to be on the stack.
I had a quick look at the code, and my worry about dynamic allocation would be that handling allocation failure seems like it might get tricky. Eg for handling struct kvm_pv_mmu_op_buffer (which is 528 bytes on the stack in kvm_pv_mmu_op()) can you deal with an mmu op failing? (maybe in that case you can easily by just setting *ret to 0?)
> There's an additional problem here, that apparently your gcc (which > version?) doesn't fold objects in a switch statement into the same > stack slot: > > switch (...) { > case x: { > struct medium a; > ... > } > case y: > struct medium b; > ... > } > };
A trick for this is to do:
union { struct medium1 a; struct medium2 b; } u;
switch (...) { case x: use u.a; ...
case y: use u.b; ... }
| |