OT: kernel oops
Don Raikes
don.raikes at oracle.com
Thu Jul 18 20:46:49 EDT 2013
Ok guys, I have one more question on this assignment :-)
I successfully read in the data using copy_from_user and then I did some mangling of the data which I verified worked properly.
Now I want to put it back into user space, so I use:
If (copy_to_user(buf, tbuf2, count))
Buf is defined in the parameter list of my function as:
Const char __user * buf
Tbuf2 is defined as
Char *tbuf;
And count is just an int.
I get a compile time error:
/home/seed/hw5/hookme.c:128: warning: passing argument 1 of ‘copy_to_user’ discards qualifiers from pointer target type
Any good ideas on why this occurring and how I can fix it?
Thanks in advance for any help!
-----Original Message-----
From: Jason White [mailto:jason at jasonjgw.net]
Sent: Thursday, July 18, 2013 4:43 PM
To: speakup at linux-speakup.org
Subject: Re: OT: kernel oops
Chris Brannon <chris at the-brannons.com> wrote:
> Don Raikes <don.raikes at oracle.com> writes:
>
> > The section of code that is having problems looks like this:
> *SNIP*
> > if (copy_from_user(&tbuf, buf, count))
>
> This line is your problem. You are passing a
> pointer-to-pointer-to-character (char **) as the first argument to
> copy_from_user, but you should be passing char * instead. So ditch
> the ampersand, and all will be right with the world!
> I could give you a thorough explanation of why this is failing, if you
> like, but to make a long story short, this line of code is smashing
> the stack!
In other words, you're passing it the address of the pointer to the buffer, rather than the pointer itself, which holds the address of the buffer.
_______________________________________________
Speakup mailing list
Speakup at linux-speakup.org
http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup
More information about the Speakup
mailing list