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@xxxxxxxxxxxxPlease read the FAQ at
http://kernelnewbies.org/FAQ