lkml.org 
[lkml]   [2008]   [Jul]   [17]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
FromRoland Dreier <>
SubjectRe: KVM overflows the stack
DateWed, 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;
		...
	}

\
 
 \ /
  Last update: 2008-07-17 08:11    [from the cache]
©2003-2008