Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1634219 > unrolled thread
| Started by | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| First post | 2017-05-02 10:10 +0200 |
| Last post | 2017-05-02 11:40 +0200 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[RFC] dev/mem: "memtester -p 0x6c80000000000 10G" cause crash Xishi Qiu <qiuxishi@huawei.com> - 2017-05-02 10:10 +0200
Re: [RFC] dev/mem: "memtester -p 0x6c80000000000 10G" cause crash Michal Hocko <mhocko@kernel.org> - 2017-05-02 10:50 +0200
Re: [RFC] dev/mem: "memtester -p 0x6c80000000000 10G" cause crash Xishi Qiu <qiuxishi@huawei.com> - 2017-05-02 11:00 +0200
Re: [RFC] dev/mem: "memtester -p 0x6c80000000000 10G" cause crash Michal Hocko <mhocko@kernel.org> - 2017-05-02 11:20 +0200
Re: [RFC] dev/mem: "memtester -p 0x6c80000000000 10G" cause crash Xishi Qiu <qiuxishi@huawei.com> - 2017-05-02 11:40 +0200
| From | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2017-05-02 10:10 +0200 |
| Subject | [RFC] dev/mem: "memtester -p 0x6c80000000000 10G" cause crash |
| Message-ID | <tCB2F-3YK-17@gated-at.bofh.it> |
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
[toc] | [next] | [standalone]
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2017-05-02 10:50 +0200 |
| Message-ID | <tCBFo-4eG-7@gated-at.bofh.it> |
| In reply to | #1634219 |
On Tue 02-05-17 15:59:23, Xishi Qiu wrote: > 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? 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. > ... > [ 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 -- Michal Hocko SUSE Labs
[toc] | [prev] | [next] | [standalone]
| From | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2017-05-02 11:00 +0200 |
| Message-ID | <tCBP4-4jy-27@gated-at.bofh.it> |
| In reply to | #1634256 |
On 2017/5/2 16:43, Michal Hocko wrote: > On Tue 02-05-17 15:59:23, Xishi Qiu wrote: >> 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? > > 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. > 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 >> ... >> [ 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 >
[toc] | [prev] | [next] | [standalone]
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2017-05-02 11:20 +0200 |
| Message-ID | <tCC8q-4Fn-15@gated-at.bofh.it> |
| In reply to | #1634266 |
On Tue 02-05-17 16:52:00, Xishi Qiu wrote: > On 2017/5/2 16:43, Michal Hocko wrote: > > > On Tue 02-05-17 15:59:23, Xishi Qiu wrote: > >> 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? > > > > 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. > > > > 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. 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. -- Michal Hocko SUSE Labs
[toc] | [prev] | [next] | [standalone]
| From | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2017-05-02 11:40 +0200 |
| Message-ID | <tCCrL-4Nn-13@gated-at.bofh.it> |
| In reply to | #1634273 |
On 2017/5/2 17:16, Michal Hocko wrote: > On Tue 02-05-17 16:52:00, Xishi Qiu wrote: >> On 2017/5/2 16:43, Michal Hocko wrote: >> >>> On Tue 02-05-17 15:59:23, Xishi Qiu wrote: >>>> 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? >>> >>> 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. >>> >> >> 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. > > 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. > OK, I know, thank you! Thanks, Xishi Qiu
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web