Hi Dave & Nilesh, Thanks for your support I fixed it, Regards, hemanth --- On Fri, 24/12/10, Nilesh Tayade <nilesh.tayade@netscout.com> wrote:
From: Nilesh Tayade <nilesh.tayade@netscout.com> Subject: Re: copy_to_user To: "Dave Hylands" <dhylands@gmail.com> Cc: "Srinivas G." <srinivasg@esntechnologies.co.in>, "Dexter Haslem" <dexter.haslem@gmail.com>, "Hemanth Kumar" <hemwire@yahoo.co.in>, "mukti jain" <muktijn@gmail.com>, Kernelnewbies@kernelnewbies.org Date: Friday, 24 December, 2010, 2:50 PM 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@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
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies