that clearly shows that the process you will call module from is not the one .... whose address you want to get value of ...
i think with using pid you will search list of processes maintained by kernel and then you need to traverse mm_struct of reqd process then virtual memory address space of the process vm_areas and then you will find what is the value present at a particular address for a particular process Nidhi On Wed, Apr 28, 2010 at 12:24 PM, Yang Fangkai <[email protected]>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. 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 > <[email protected]> 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 <[email protected]> > > 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 > >> <[email protected]> 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 < > [email protected]> > >> > 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 [email protected] > >> >> 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 > > > > > > > -- Thanks & Regards Nidhi Mittal Hada Scientific officer D Computer Division Bhabha Atomic Research Center Mumbai
