what`s wrong?
Quoted 6 lines · il boba
Quoted 1 line
Is there anybody that can help me understand what`s wrong with this code?
Yes, easily spotted a major problem without even reading the whole thing.
Quoted 7 lines
Quoted 5 lines
#define BUFSIZ 8192
int
init_module()
{
int err_frame[BUFSIZ];The entire kernel stack is only 8kB in size. You have already killed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quoted 2 lines
a bunch of random memory by allocating this much memory on the stack. You allocated 4*8192 = 32kB on the stack here.
Sure, the kernel stack is 8192 Bytes, but "err_frame[]" is a local variable. Does the kernel allocate memory for "err_frame[]" from the stack??
Quoted 5 lines
Quoted 3 lines
int
init_err_frame(int err_frame[]){
int i, k = 0, j = 0;
char buffer[BUFSIZ];Another 8kB on the stack here - further random corruption.
Here, I think, err_frame[] as a function parameter will take 8K in the kernel stack. Am I correct?
Thank you.
On Thu, Apr 25, 2002 at 05:12:21PM +0800, Huo Zhigang wrote:
...
Quoted 8 lines
Quoted 1 line
The entire kernel stack is only 8kB in size. You have already killed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quoted 2 lines
a bunch of random memory by allocating this much memory on the stack. You allocated 4*8192 = 32kB on the stack here.
Sure, the kernel stack is 8192 Bytes, but "err_frame[]" is a local variable. Does the kernel allocate memory for "err_frame[]" from the stack??
It is not about how KERNEL does it, but how C (programming language) does it. If you don't know C's memory management things regarding various classes of variables, I suggest you pick some good reference book and study it asap.
Quoted 2 lines
Here, I think, err_frame[] as a function parameter will take 8K in the kernel stack. Am I correct?
Sorry, this isn't "programming in C"-education forum..
Quoted 1 line
Thank you.
/Matti Aarnio