Re: Problem with set_memory_rw

From: KAMEZAWA Hiroyuki
Date: Thu Feb 04 2010 - 00:48:50 EST


On Thu, 04 Feb 2010 07:26:25 +0200
Oleg Kutkov <elenbert@xxxxxxxxx> wrote:

> Hello, this is my first post in a mailing list, so excuse me if
> something wrong...
> I'm new in kernel and try to do some manipulation with memory pages.
> For manipulating memory page attributes i used set_memory_rw(),
> but function returning 0 and i can't continue writing to memory,
> because page, that i want to change, is read only by default.
> This is part of my code:
>
>
> long unsigned addr;
>
> addr = 0x0509940; //this is addres in memory, that i want
> to overwrite (read only, for default)
>
> set_memory_rw(addr, 1); //try to set rw permission on this addres for
> one memory page.
>
>
> So, function return zero, this is error, as i can understand. If i try
> to write by this address - kernel write in log error messages, such as
> "Unable to handle kernel request at address 0x0509940".
> This is kernel bug or something wrong in my code?
>
> Thank for any help.
>

set_memory_rw()'s 1st argument requires virtual address.
So, you need virtual address of the page you want.

- phys_to_virt() ... convert physical address to virtual address.
- virt_to_phys() ... convert virtual address to physical.

Anyway, RW is vitual address mapping's attribute and not for physical.

Thanks,
-Kame


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/