On Wed, Apr 28, 2010 at 12:24 PM, Yang Fangkai <wolfgang.yang@xxxxxxxxx> wrote: > Hi, Nidhi, > > Thanks! Now I know what is the problem. > > But in my project, I am developing a virtual char device driver > such that user can read any process's memory contents by specifying > its pid and virtual address. Therefore, a device /dev/gh is > registered, and the user try to do something like: > > echo -n targetpid>/dev/gh & echo -n addr>/dev/gh > > Therefore, the target process can't be modified. The device driver > will retrieve the value by pid and virtual address and return it to > user at terminal. Isn't it something similar to ptrace with PTRACE_PEEKTEXT, PTRACE_PEEKDATA Thanks - Manish > I don't know how to solve this problem with get_user > under my scenario. Thank you! > > Fangkai > > On Wed, Apr 28, 2010 at 1:42 AM, nidhi mittal hada > <nidhimittal19@xxxxxxxxx> wrote: >> you should somehow call the kernel module from user space program ... >> may be using ioctl .. >> so that you are in same process context --- as the one you are sending >> address from . >> >> write char dev driver with ioctl method defined >> then call ioctl from user space >> >> ioctl(fd,<IOCTL_CMD>,addrees you want to send) >> >> >> Now in kernel module >> >> get_user(kernel data variable, <user space address>); >> >> Nidhi >> >> >> >> >> >> >> >> On Wed, Apr 28, 2010 at 11:55 AM, Yang Fangkai <wolfgang.yang@xxxxxxxxx> >> wrote: >>> >>> Hi, Nidhi, >>> >>> Thanks for your reply! Yes, you are right. I pass the address >>> to the module from bash command echo, therefore when the address is >>> referred, the current pid is bash's pid, instead of the simple program >>> I wrote. >>> >>> But how can I fix this problem? >>> >>> Thank you! >>> >>> Fangkai >>> >>> On Wed, Apr 28, 2010 at 1:01 AM, nidhi mittal hada >>> <nidhimittal19@xxxxxxxxx> wrote: >>> > >>> > in your kernel module try to print current->pid >>> > is it same as the user space process id ? >>> > i think when in kernel module you are not in the same process context >>> > whihc >>> > you want to refer ... >>> > >>> > >>> > Nidhi >>> > >>> > On Wed, Apr 28, 2010 at 10:38 AM, Yang Fangkai <wolfgang.yang@xxxxxxxxx> >>> > wrote: >>> >> >>> >> 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 does output bff91914 >>> >> 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!! >>> >> >>> >> -- >>> >> To unsubscribe from this list: send an email with >>> >> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx >>> >> Please read the FAQ at http://kernelnewbies.org/FAQ >>> >> >>> > >>> > >>> > >>> > -- >>> > Thanks & Regards >>> > Nidhi Mittal Hada >>> > Scientific officer D >>> > Computer Division >>> > Bhabha Atomic Research Center >>> > Mumbai >>> > >>> > >>> > >> >> >> >> -- >> Thanks & Regards >> Nidhi Mittal Hada >> Scientific officer D >> Computer Division >> Bhabha Atomic Research Center >> Mumbai >> >> >> > > -- > To unsubscribe from this list: send an email with > "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx > Please read the FAQ at http://kernelnewbies.org/FAQ > > -- Thanks - Manish ================================== [$\*.^ -- I miss being one of them ================================== -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ