Skip to contentSkip to conversation

what`s wrong?

DISCUSSION Huo Zhigang 2 participants 2 messages Apr 25, 2002

lore
Share & tools
lore
#0 lore raw
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.

#1 lore raw

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