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; ... }
|  |