Re: question about get_user

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Oh, yes, something like that... Maybe I should have used ptrace to
solve this problem instead of by get_user..

Thanks!

Fangkai

On Wed, Apr 28, 2010 at 2:19 AM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
> 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



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux