dev/mem: "memtester -p 0x6c80000000000 10G" cause crash
Hi, I use "memtester -p 0x6c80000000000 10G" to test physical address 0x6c80000000000 Because this physical address is invalid, and valid_mmap_phys_addr_range() always return 1, so it causes crash.
My question is that should the user assure the physical address is valid?
...
[ 169.147578] ? panic+0x1f1/0x239 [ 169.150789] oops_end+0xb8/0xd0 [ 169.153910] pgtable_bad+0x8a/0x95 [ 169.157294] __do_page_fault+0x3aa/0x4a0 [ 169.161194] do_page_fault+0x30/0x80 [ 169.164750] ? do_syscall_64+0x175/0x180 [ 169.168649] page_fault+0x28/0x30
Thanks,
Xishi Qiu
Quoted 5 lines · Xishi Qiu
Hi, I use "memtester -p
0x6c8000000000010G" to test physical address0x6c80000000000Because this physical address is invalid, andvalid_mmap_phys_addr_range()always return 1, so it causes crash.My question is that should the user assure the physical address is valid?
We already seem to be checking range_is_allowed(). What is your CONFIG_STRICT_DEVMEM setting? The code seems to be rather confusing but my assumption is that you better know what you are doing when mapping this file.
Quoted 11 lines
...
[ 169.147578] ? panic+0x1f1/0x239 [ 169.150789] oops_end+0xb8/0xd0 [ 169.153910] pgtable_bad+0x8a/0x95 [ 169.157294] __do_page_fault+0x3aa/0x4a0 [ 169.161194] do_page_fault+0x30/0x80 [ 169.164750] ? do_syscall_64+0x175/0x180 [ 169.168649] page_fault+0x28/0x30Thanks,
Xishi Qiu
Signature · 8 lines
Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 5 lines · Michal Hocko
Quoted 4 lines · Xishi Qiu
Hi, I use "memtester -p
0x6c8000000000010G" to test physical address0x6c80000000000Because this physical address is invalid, andvalid_mmap_phys_addr_range()always return 1, so it causes crash.
Quoted 7 lines
Quoted 1 line
My question is that should the user assure the physical address is valid?
We already seem to be checking
range_is_allowed(). What is yourCONFIG_STRICT_DEVMEMsetting? The code seems to be rather confusing but my assumption is that you better know what you are doing when mapping this file.
HI Michal,
CONFIG_STRICT_DEVMEM=y, and range_is_allowed() will skip memory, but 0x6c80000000000 is not memory, it is just a invalid address, so it cause crash.
You mean the user should assure the physical address is valid, right?
Thanks,
Xishi Qiu
Quoted 12 lines
Quoted 11 lines
...
[ 169.147578] ? panic+0x1f1/0x239 [ 169.150789] oops_end+0xb8/0xd0 [ 169.153910] pgtable_bad+0x8a/0x95 [ 169.157294] __do_page_fault+0x3aa/0x4a0 [ 169.161194] do_page_fault+0x30/0x80 [ 169.164750] ? do_syscall_64+0x175/0x180 [ 169.168649] page_fault+0x28/0x30Thanks,
Xishi Qiu
Quoted 15 lines · Xishi Qiu
Quoted 5 lines · Michal Hocko
Quoted 4 lines · Xishi Qiu
Hi, I use "memtester -p
0x6c8000000000010G" to test physical address0x6c80000000000Because this physical address is invalid, andvalid_mmap_phys_addr_range()always return 1, so it causes crash.Quoted 7 lines
Quoted 1 line
My question is that should the user assure the physical address is valid?
We already seem to be checking
range_is_allowed(). What is yourCONFIG_STRICT_DEVMEMsetting? The code seems to be rather confusing but my assumption is that you better know what you are doing when mapping this file.
Quoted 5 lines
HI Michal,
CONFIG_STRICT_DEVMEM=y, andrange_is_allowed()will skip memory, but0x6c80000000000is not memory, it is just a invalid address, so it cause crash.
OK, I only now looked at the value. It is beyond addressable limit (for 47b address space). None of the checks seems to stop this because range_is_allowed() resp. its devmem_is_allowed() will allow it as a non RAM (!page_is_ram check). I am not really sure how to fix this or whether even we should try to fix this particular problem. As I've said /dev/mem is dangerous and you should better know what you are doing when accessing it.
Signature · 8 lines
Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 22 lines · Michal Hocko
Quoted 15 lines · Xishi Qiu
Quoted 5 lines · Michal Hocko
Quoted 4 lines · Xishi Qiu
Hi, I use "memtester -p
0x6c8000000000010G" to test physical address0x6c80000000000Because this physical address is invalid, andvalid_mmap_phys_addr_range()always return 1, so it causes crash.Quoted 7 lines
Quoted 1 line
My question is that should the user assure the physical address is valid?
We already seem to be checking
range_is_allowed(). What is yourCONFIG_STRICT_DEVMEMsetting? The code seems to be rather confusing but my assumption is that you better know what you are doing when mapping this file.Quoted 5 lines
HI Michal,
CONFIG_STRICT_DEVMEM=y, andrange_is_allowed()will skip memory, but0x6c80000000000is not memory, it is just a invalid address, so it cause crash.
Quoted 8 lines
OK, I only now looked at the value. It is beyond addressable limit (for 47b address space). None of the checks seems to stop this because
range_is_allowed()resp. itsdevmem_is_allowed()will allow it as a non RAM (!page_is_ram check). I am not really sure how to fix this or whether even we should try to fix this particular problem. As I've said/dev/memis dangerous and you should better know what you are doing when accessing it.
OK, I know, thank you!
Thanks,
Xishi Qiu