copy_to_user

Nilesh Tayade nilesh.tayade at netscout.com
Fri Dec 24 04:20:45 EST 2010


On Fri, 2010-12-24 at 01:00 -0800, Dave Hylands wrote:
> Hi Nilesh.
> 
> On Thu, Dec 23, 2010 at 11:59 PM, Nilesh Tayade
> <nilesh.tayade at netscout.com> wrote:
> ...snip...
> > I tried it, and it seems adding mutex_init() works as Mukti mentioned. I
> > did get a kernel oops before (but no segfault). After adding
> > mutex_init() there is no oops/segfault. The code, however, is reading
> > the garbage, that needs to be fixed.
> 
> 	char n[20];
> 	short a = *((short *)&n[0]);
> 	short b = *((short *)&n[2]);
> 	short c = *((short *)&n[4]);
> 
> This sets a b and c to have essentially random values.
> 
> 		nbytes = read( fd, n, 40);
> 
> This causes the value of n to change. However, the values of a, b, and
> c retain the same random values you assigned them above.
> 
> 		printf( "\r a = %d \n ", a);
> 		printf("\r b = %d \n",b);
> 		printf("\r c = %d \n",c);
> 
> This prints the random values of a, b, and c rather than printing thee
> values of n that you read in.

Thanks for the explanation Dave.

I did not really bother to debug to avoid the garbage values, as the
main concern was for segfault and kernel oops.

> 
> Dave Hylands


-- 
Thanks,
Nilesh



More information about the Kernelnewbies mailing list