problem mapping physical address from /dev/mem
Hi, I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted". Browsing through some articles I found the option of compiling the kernel with CONFIG_STRICT_DEVMEM option disabled. I have tried this but this isn't working either. Please help me figure out the problem. Thanks Vaibhav Jain
Hi... On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) ) By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless. -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
On Thu, Oct 6, 2011 at 11:28 AM, Mulyadi Santosa <mulyadi.santosa@gmail.com>wrote:
Hi...
On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) )
By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi, I tried the same with other addresses (greater than 0x10000 ) also but it is throwing the same error. Is there a way to get over this ? Thanks Vaibhav Jain
On Fri, Oct 7, 2011 at 4:13 AM, Vaibhav Jain <vjoss197@gmail.com> wrote:
On Thu, Oct 6, 2011 at 11:28 AM, Mulyadi Santosa < mulyadi.santosa@gmail.com> wrote:
Hi...
On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) )
By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi,
I tried the same with other addresses (greater than 0x10000 ) also but it is throwing the same error. Is there a way to get over this ?
Thanks Vaibhav Jain
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Vaibhav,
This is how it can be done. Refer link http://www.theknotter.net/system-memory-dumps-on-linux/ I have attached the modified code which disables the socket creation part and dumps the output in a file. Regards, Rohan Puri
On Thu, Oct 6, 2011 at 9:42 PM, rohan puri <rohan.puri15@gmail.com> wrote:
On Fri, Oct 7, 2011 at 4:13 AM, Vaibhav Jain <vjoss197@gmail.com> wrote:
On Thu, Oct 6, 2011 at 11:28 AM, Mulyadi Santosa < mulyadi.santosa@gmail.com> wrote:
Hi...
On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) )
By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi,
I tried the same with other addresses (greater than 0x10000 ) also but it is throwing the same error. Is there a way to get over this ?
Thanks Vaibhav Jain
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Vaibhav,
This is how it can be done. Refer link http://www.theknotter.net/system-memory-dumps-on-linux/
I have attached the modified code which disables the socket creation part and dumps the output in a file.
Regards, Rohan Puri
Thanks Rohan for the code but I already have a code that reads memory using /dev/mem and mmap. Only difference is I have to manually change the starting address in program. The problem is whenver I give any System RAM address the mmap call fails with 'Operation not permitted'. I googled a little and found that normally this operation is not allowed and the kernel has to be compiled with CONFIG_STRICT_DEVMEM disabled to read any memory location in this way. I also found out about the boot option 'strict-devmem =0'. I tried both these options but none of them seems to working. So I am trying to figure out if there is some other setting that I need to change. I am doing this on Fedora 15 - 2.6.38 kernel. Thanks Vaibhav Jain
On Fri, Oct 7, 2011 at 12:41 PM, Vaibhav Jain <vjoss197@gmail.com> wrote:
On Thu, Oct 6, 2011 at 9:42 PM, rohan puri <rohan.puri15@gmail.com> wrote:
On Fri, Oct 7, 2011 at 4:13 AM, Vaibhav Jain <vjoss197@gmail.com> wrote:
On Thu, Oct 6, 2011 at 11:28 AM, Mulyadi Santosa < mulyadi.santosa@gmail.com> wrote:
Hi...
On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) )
By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi,
I tried the same with other addresses (greater than 0x10000 ) also but it is throwing the same error. Is there a way to get over this ?
Thanks Vaibhav Jain
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Vaibhav,
This is how it can be done. Refer link http://www.theknotter.net/system-memory-dumps-on-linux/
I have attached the modified code which disables the socket creation part and dumps the output in a file.
Regards, Rohan Puri
Thanks Rohan for the code but I already have a code that reads memory using /dev/mem and mmap. Only difference is I have to manually change the starting address in program. The problem is whenver I give any System RAM address the mmap call fails with 'Operation not permitted'. I googled a little and found that normally this operation is not allowed and the kernel has to be compiled with CONFIG_STRICT_DEVMEM disabled to read any memory location in this way. I also found out about the boot option 'strict-devmem =0'. I tried both these options but none of them seems to working. So I am trying to figure out if there is some other setting that I need to change. I am doing this on Fedora 15 - 2.6.38 kernel.
Thanks Vaibhav Jain
Hi Vaibhav, My iomem file : - 00000000-0000ffff : reserved *00010000-0009f3ff : System RAM* 0009f400-0009ffff : reserved 000c0000-000c7fff : Video ROM 000cc000-000ccfff : Adapter ROM 000cd000-000cffff : pnp 00:0c 000e0000-000effff : pnp 00:0c 000f0000-000fffff : reserved 000f0000-000fffff : System ROM *00100000-cf6dffff : System RAM* 01000000-015dadf2 : Kernel code 015dadf3-01ab907f : Kernel data 01bb1000-01d04fff : Kernel bss Now the program which i sent you, with that I am able to read the 1st part of System RAM successfully. I am getting the operation not permitted error from mmap for second part of System RAM. Can you verify the same on your system. I mean are you able to read the 1st part (if your System RAM is divided) or not ? Regards, Rohan Puri
On Fri, Oct 7, 2011 at 3:29 PM, rohan puri <rohan.puri15@gmail.com> wrote:
On Fri, Oct 7, 2011 at 12:41 PM, Vaibhav Jain <vjoss197@gmail.com> wrote:
On Thu, Oct 6, 2011 at 9:42 PM, rohan puri <rohan.puri15@gmail.com>wrote:
On Fri, Oct 7, 2011 at 4:13 AM, Vaibhav Jain <vjoss197@gmail.com> wrote:
On Thu, Oct 6, 2011 at 11:28 AM, Mulyadi Santosa < mulyadi.santosa@gmail.com> wrote:
Hi...
On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) )
By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi,
I tried the same with other addresses (greater than 0x10000 ) also but it is throwing the same error. Is there a way to get over this ?
Thanks Vaibhav Jain
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Vaibhav,
This is how it can be done. Refer link http://www.theknotter.net/system-memory-dumps-on-linux/
I have attached the modified code which disables the socket creation part and dumps the output in a file.
Regards, Rohan Puri
Thanks Rohan for the code but I already have a code that reads memory using /dev/mem and mmap. Only difference is I have to manually change the starting address in program. The problem is whenver I give any System RAM address the mmap call fails with 'Operation not permitted'. I googled a little and found that normally this operation is not allowed and the kernel has to be compiled with CONFIG_STRICT_DEVMEM disabled to read any memory location in this way. I also found out about the boot option 'strict-devmem =0'. I tried both these options but none of them seems to working. So I am trying to figure out if there is some other setting that I need to change. I am doing this on Fedora 15 - 2.6.38 kernel.
Thanks Vaibhav Jain
Hi Vaibhav,
My iomem file : -
00000000-0000ffff : reserved *00010000-0009f3ff : System RAM* 0009f400-0009ffff : reserved 000c0000-000c7fff : Video ROM 000cc000-000ccfff : Adapter ROM 000cd000-000cffff : pnp 00:0c 000e0000-000effff : pnp 00:0c 000f0000-000fffff : reserved 000f0000-000fffff : System ROM *00100000-cf6dffff : System RAM* 01000000-015dadf2 : Kernel code 015dadf3-01ab907f : Kernel data 01bb1000-01d04fff : Kernel bss
Now the program which i sent you, with that I am able to read the 1st part of System RAM successfully. I am getting the operation not permitted error from mmap for second part of System RAM. Can you verify the same on your system. I mean are you able to read the 1st part (if your System RAM is divided) or not ?
Regards, Rohan Puri
Another way to get the memory map is install crash module on your system and access the memory by accessing the new device /dev/crash instead of /dev/mem Regards, Rohan Puri
On Fri, Oct 7, 2011 at 3:51 PM, rohan puri <rohan.puri15@gmail.com> wrote:
On Fri, Oct 7, 2011 at 3:29 PM, rohan puri <rohan.puri15@gmail.com> wrote:
On Fri, Oct 7, 2011 at 12:41 PM, Vaibhav Jain <vjoss197@gmail.com> wrote:
On Thu, Oct 6, 2011 at 9:42 PM, rohan puri <rohan.puri15@gmail.com>wrote:
On Fri, Oct 7, 2011 at 4:13 AM, Vaibhav Jain <vjoss197@gmail.com>wrote:
On Thu, Oct 6, 2011 at 11:28 AM, Mulyadi Santosa < mulyadi.santosa@gmail.com> wrote:
Hi...
On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) )
By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi,
I tried the same with other addresses (greater than 0x10000 ) also but it is throwing the same error. Is there a way to get over this ?
Thanks Vaibhav Jain
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Vaibhav,
This is how it can be done. Refer link http://www.theknotter.net/system-memory-dumps-on-linux/
I have attached the modified code which disables the socket creation part and dumps the output in a file.
Regards, Rohan Puri
Thanks Rohan for the code but I already have a code that reads memory using /dev/mem and mmap. Only difference is I have to manually change the starting address in program. The problem is whenver I give any System RAM address the mmap call fails with 'Operation not permitted'. I googled a little and found that normally this operation is not allowed and the kernel has to be compiled with CONFIG_STRICT_DEVMEM disabled to read any memory location in this way. I also found out about the boot option 'strict-devmem =0'. I tried both these options but none of them seems to working. So I am trying to figure out if there is some other setting that I need to change. I am doing this on Fedora 15 - 2.6.38 kernel.
Thanks Vaibhav Jain
Hi Vaibhav,
My iomem file : -
00000000-0000ffff : reserved *00010000-0009f3ff : System RAM* 0009f400-0009ffff : reserved 000c0000-000c7fff : Video ROM 000cc000-000ccfff : Adapter ROM 000cd000-000cffff : pnp 00:0c 000e0000-000effff : pnp 00:0c 000f0000-000fffff : reserved 000f0000-000fffff : System ROM *00100000-cf6dffff : System RAM* 01000000-015dadf2 : Kernel code 015dadf3-01ab907f : Kernel data 01bb1000-01d04fff : Kernel bss
Now the program which i sent you, with that I am able to read the 1st part of System RAM successfully. I am getting the operation not permitted error from mmap for second part of System RAM. Can you verify the same on your system. I mean are you able to read the 1st part (if your System RAM is divided) or not ?
Regards, Rohan Puri
Another way to get the memory map is install crash module on your system and access the memory by accessing the new device /dev/crash instead of /dev/mem
Regards, Rohan Puri
Even I tried after disabling the option CONFIG_STRICT_DEVMEM, but still cannot access the 2nd part of System RAM. Also my linux is for x86_64 arch, hence maybe I am able to access the 1st part of System RAM though that is above 1 MB. Regards, Rohan Puri
On Fri, Oct 7, 2011 at 3:45 AM, rohan puri <rohan.puri15@gmail.com> wrote:
On Fri, Oct 7, 2011 at 3:51 PM, rohan puri <rohan.puri15@gmail.com> wrote:
On Fri, Oct 7, 2011 at 3:29 PM, rohan puri <rohan.puri15@gmail.com>wrote:
On Fri, Oct 7, 2011 at 12:41 PM, Vaibhav Jain <vjoss197@gmail.com>wrote:
On Thu, Oct 6, 2011 at 9:42 PM, rohan puri <rohan.puri15@gmail.com>wrote:
On Fri, Oct 7, 2011 at 4:13 AM, Vaibhav Jain <vjoss197@gmail.com>wrote:
On Thu, Oct 6, 2011 at 11:28 AM, Mulyadi Santosa < mulyadi.santosa@gmail.com> wrote:
Hi...
On Thu, Oct 6, 2011 at 02:34, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted".
Probably this could also due to mmap NULL dereferencing protection (at least that's how I name it :) )
By default, the lowest 65536 byte (10000 in hex) is protected from mapping etc. It practically render such null dererefencing useless.
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Hi,
I tried the same with other addresses (greater than 0x10000 ) also but it is throwing the same error. Is there a way to get over this ?
Thanks Vaibhav Jain
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Vaibhav,
This is how it can be done. Refer link http://www.theknotter.net/system-memory-dumps-on-linux/
I have attached the modified code which disables the socket creation part and dumps the output in a file.
Regards, Rohan Puri
Thanks Rohan for the code but I already have a code that reads memory using /dev/mem and mmap. Only difference is I have to manually change the starting address in program. The problem is whenver I give any System RAM address the mmap call fails with 'Operation not permitted'. I googled a little and found that normally this operation is not allowed and the kernel has to be compiled with CONFIG_STRICT_DEVMEM disabled to read any memory location in this way. I also found out about the boot option 'strict-devmem =0'. I tried both these options but none of them seems to working. So I am trying to figure out if there is some other setting that I need to change. I am doing this on Fedora 15 - 2.6.38 kernel.
Thanks Vaibhav Jain
Hi Vaibhav,
My iomem file : -
00000000-0000ffff : reserved *00010000-0009f3ff : System RAM* 0009f400-0009ffff : reserved 000c0000-000c7fff : Video ROM 000cc000-000ccfff : Adapter ROM 000cd000-000cffff : pnp 00:0c 000e0000-000effff : pnp 00:0c 000f0000-000fffff : reserved 000f0000-000fffff : System ROM *00100000-cf6dffff : System RAM* 01000000-015dadf2 : Kernel code 015dadf3-01ab907f : Kernel data 01bb1000-01d04fff : Kernel bss
Now the program which i sent you, with that I am able to read the 1st part of System RAM successfully. I am getting the operation not permitted error from mmap for second part of System RAM. Can you verify the same on your system. I mean are you able to read the 1st part (if your System RAM is divided) or not ?
Regards, Rohan Puri
Another way to get the memory map is install crash module on your system and access the memory by accessing the new device /dev/crash instead of /dev/mem
Regards, Rohan Puri
Even I tried after disabling the option CONFIG_STRICT_DEVMEM, but still cannot access the 2nd part of System RAM. Also my linux is for x86_64 arch, hence maybe I am able to access the 1st part of System RAM though that is above 1 MB.
Regards, Rohan Puri
On my system 'cat /proc/iomem' gives the following 00000000-0000ffff : reserved *00010000-0008efff : System RAM* 0008f000-0009ffff : reserved 000a0000-000bffff : PCI Bus 0000:00 000a0000-000bffff : Video RAM area 000c0000-000c7fff : Video ROM 000cd000-000d2dff : Adapter ROM 000d3000-000d53ff : Adapter ROM 000d5800-000d67ff : Adapter ROM 000d6800-000d77ff : Adapter ROM 000e0000-000fffff : reserved 000f0000-000fffff : System ROM *00100000-1f3fffff : System RAM* 00400000-007f0a8f : Kernel code 007f0a90-00a83d3f : Kernel data 00b18000-00bfbfff : Kernel bss 1f400000-1fffffff : RAM buffer 7970b000-797a4fff : ACPI Non-volatile I am unable to access either of System RAM addresses. Both of them give Operation not permitted. Thanks Vaibhav Jain
On Thu, Oct 6, 2011 at 1:04 AM, Vaibhav Jain <vjoss197@gmail.com> wrote:
Hi,
I am trying to run a program that scans memory from a given physical address using /dev/mem. It uses mmap to map physical address from /dev/mem. So to start with I used /proc/iomem to look up the physical memory mapping and found the address 00010000 to be the starting address for System ram. But whenever I provide this address to the program it throws an error of "Operation not permitted". Browsing through some articles I found the option of compiling the kernel with CONFIG_STRICT_DEVMEM option disabled. I have tried this but this isn't working either. Please help me figure out the problem.
What is the kernel version? Thanks, Arun
Thanks Vaibhav Jain
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
participants (4)
-
Arun KS -
Mulyadi Santosa -
rohan puri -
Vaibhav Jain