Get_user running at kernel mode returns error

Posted by Fangkai Yang on Stack Overflow See other posts from Stack Overflow or by Fangkai Yang
Published on 2010-04-28T05:11:21Z Indexed on 2010/04/28 5:13 UTC
Read the original article Hit count: 289

Filed under:
|
|

Hi, all,

I have a problem with get_user() macro. What I did is as follows:

I run the following program

int main() { int a = 20; printf("address of a: %p", &a); sleep(200); return 0; }

When the program runs, it outputs the address of a, say, 0xbff91914.

Then I pass this address to a module running in Kernel Mode that retrieves the contents at this address (at the time when I did this, I also made sure the process didn't terminate, because I put it to sleep for 200 seconds... ):

The address is firstly sent as a string, and I cast them into pointer type.

int * ptr = (int*)simple_strtol(buffer, NULL,16); printk("address: %p",ptr); // I use this line to make sure the cast is correct. When running, it outputs bff91914, as expected. int val = 0; int res; res= get_user(val, (int*) ptr);

However, res is always not 0, meaning that get_user returns error. I am wondering what is the problem....

Thank you!!

-- Fangkai

© Stack Overflow or respective owner

Related posts about linux

Related posts about kernel