Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1212169 > unrolled thread
| Started by | Russell King - ARM Linux <linux@arm.linux.org.uk> |
|---|---|
| First post | 2015-08-24 15:20 +0200 |
| Last post | 2015-08-25 11:20 +0200 |
| Articles | 9 — 5 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v2 5/5] arm64: add KASan support Russell King - ARM Linux <linux@arm.linux.org.uk> - 2015-08-24 15:20 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Linus Walleij <linus.walleij@linaro.org> - 2015-08-24 15:50 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-08-24 16:20 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Vladimir Murzin <vladimir.murzin@arm.com> - 2015-08-24 17:50 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-08-24 18:10 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Vladimir Murzin <vladimir.murzin@arm.com> - 2015-08-24 18:20 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-08-24 18:20 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Russell King - ARM Linux <linux@arm.linux.org.uk> - 2015-08-24 19:50 +0200
Re: [PATCH v2 5/5] arm64: add KASan support Will Deacon <will.deacon@arm.com> - 2015-08-25 11:20 +0200
| From | Russell King - ARM Linux <linux@arm.linux.org.uk> |
|---|---|
| Date | 2015-08-24 15:20 +0200 |
| Subject | Re: [PATCH v2 5/5] arm64: add KASan support |
| Message-ID | <q0ZPl-kn-31@gated-at.bofh.it> |
On Tue, Jul 21, 2015 at 11:27:56PM +0200, Linus Walleij wrote: > On Tue, Jul 21, 2015 at 4:27 PM, Andrey Ryabinin <a.ryabinin@samsung.com> wrote: > > > I used vexpress. Anyway, it doesn't matter now, since I have an update > > with a lot of stuff fixed, and it works on hardware. > > I still need to do some work on it and tomorrow, probably, I will share. > > Ah awesome. I have a stash of ARM boards so I can test it on a > range of hardware once you feel it's ready. > > Sorry for pulling stuff out of your hands, people are excited about > KASan ARM32 as it turns out. People may be excited about it because it's a new feature, but we really need to consider whether gobbling up 512MB of userspace for it is a good idea or not. There are programs around which like to map large amounts of memory into their process space, and the more we steal from them, the more likely these programs are to fail. The other thing which I'm not happy about is having a 16K allocation per thread - the 16K allocation for the PGD is already prone to invoking the OOM killer after memory fragmentation has set in, we don't need another 16K allocation. We're going from one 16K allocation per process to that _and_ one 16K allocation per thread. -- FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up according to speedtest.net. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Linus Walleij <linus.walleij@linaro.org> |
|---|---|
| Date | 2015-08-24 15:50 +0200 |
| Message-ID | <q10in-T2-37@gated-at.bofh.it> |
| In reply to | #1212169 |
On Mon, Aug 24, 2015 at 3:15 PM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > On Tue, Jul 21, 2015 at 11:27:56PM +0200, Linus Walleij wrote: >> On Tue, Jul 21, 2015 at 4:27 PM, Andrey Ryabinin <a.ryabinin@samsung.com> wrote: >> >> > I used vexpress. Anyway, it doesn't matter now, since I have an update >> > with a lot of stuff fixed, and it works on hardware. >> > I still need to do some work on it and tomorrow, probably, I will share. >> >> Ah awesome. I have a stash of ARM boards so I can test it on a >> range of hardware once you feel it's ready. >> >> Sorry for pulling stuff out of your hands, people are excited about >> KASan ARM32 as it turns out. > > People may be excited about it because it's a new feature, but we really > need to consider whether gobbling up 512MB of userspace for it is a good > idea or not. There are programs around which like to map large amounts > of memory into their process space, and the more we steal from them, the > more likely these programs are to fail. I looked at some different approaches over the last weeks for this when playing around with KASan. It seems since KASan was developed on 64bit systems, this was not much of an issue for them as they could take their shadow memory from the vmalloc space. I think it is possible to actually just steal as much memory as is needed to cover the kernel, and not 1/8 of the entire addressable 32bit space. So instead of covering all from 0x0-0xffffffff at least just MODULES_VADDR thru 0xffffffff should be enough. So if that is 0xbf000000-0xffffffff in most cases, 0x41000000 bytes, then 1/8 of that, 0x8200000, 130MB should be enough. (Andrey need to say if this is possible.) That will probably miss some usecases I'm not familiar with, where the kernel is actually executing something below 0xbf000000... I looked at taking memory from vmalloc instead, but ran into problems since this is subject to the highmem split and KASan need to have it's address offset at compile time. On Ux500 I managed to remove all the static maps and steal memory from the top of the vmalloc area instead of the beginning, but that is probably not generally feasible. I suspect you have better ideas than what I can come up with though. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andrey Ryabinin <ryabinin.a.a@gmail.com> |
|---|---|
| Date | 2015-08-24 16:20 +0200 |
| Message-ID | <q10Ln-1GP-11@gated-at.bofh.it> |
| In reply to | #1212208 |
2015-08-24 16:45 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>: > On Mon, Aug 24, 2015 at 3:15 PM, Russell King - ARM Linux > <linux@arm.linux.org.uk> wrote: >> On Tue, Jul 21, 2015 at 11:27:56PM +0200, Linus Walleij wrote: >>> On Tue, Jul 21, 2015 at 4:27 PM, Andrey Ryabinin <a.ryabinin@samsung.com> wrote: >>> >>> > I used vexpress. Anyway, it doesn't matter now, since I have an update >>> > with a lot of stuff fixed, and it works on hardware. >>> > I still need to do some work on it and tomorrow, probably, I will share. >>> >>> Ah awesome. I have a stash of ARM boards so I can test it on a >>> range of hardware once you feel it's ready. >>> >>> Sorry for pulling stuff out of your hands, people are excited about >>> KASan ARM32 as it turns out. >> >> People may be excited about it because it's a new feature, but we really >> need to consider whether gobbling up 512MB of userspace for it is a good >> idea or not. There are programs around which like to map large amounts >> of memory into their process space, and the more we steal from them, the >> more likely these programs are to fail. > > I looked at some different approaches over the last weeks for this > when playing around with KASan. > > It seems since KASan was developed on 64bit systems, this was > not much of an issue for them as they could take their shadow > memory from the vmalloc space. > > I think it is possible to actually just steal as much memory as is > needed to cover the kernel, and not 1/8 of the entire addressable > 32bit space. So instead of covering all from 0x0-0xffffffff > at least just MODULES_VADDR thru 0xffffffff should be enough. > So if that is 0xbf000000-0xffffffff in most cases, 0x41000000 > bytes, then 1/8 of that, 0x8200000, 130MB should be enough. > (Andrey need to say if this is possible.) > Yes, ~130Mb (3G/1G split) should work. 512Mb shadow is optional. The only advantage of 512Mb shadow is better handling of user memory accesses bugs (access to user memory without copy_from_user/copy_to_user/strlen_user etc API). In case of 512Mb shadow we could to not map anything in shadow for user addresses, so such bug will guarantee to crash the kernel. In case of 130Mb, the behavior will depend on memory layout of the current process. So, I think it's fine to keep shadow only for kernel addresses. > That will probably miss some usecases I'm not familiar with, where > the kernel is actually executing something below 0xbf000000... > > I looked at taking memory from vmalloc instead, but ran into > problems since this is subject to the highmem split and KASan > need to have it's address offset at compile time. On > Ux500 I managed to remove all the static maps and steal memory > from the top of the vmalloc area instead of the beginning, but > that is probably not generally feasible. > > I suspect you have better ideas than what I can come up > with though. > > Yours, > Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Vladimir Murzin <vladimir.murzin@arm.com> |
|---|---|
| Date | 2015-08-24 17:50 +0200 |
| Message-ID | <q12au-3Av-5@gated-at.bofh.it> |
| In reply to | #1212232 |
On 24/08/15 15:15, Andrey Ryabinin wrote: > 2015-08-24 16:45 GMT+03:00 Linus Walleij <linus.walleij@linaro.org>: >> On Mon, Aug 24, 2015 at 3:15 PM, Russell King - ARM Linux >> <linux@arm.linux.org.uk> wrote: >>> On Tue, Jul 21, 2015 at 11:27:56PM +0200, Linus Walleij wrote: >>>> On Tue, Jul 21, 2015 at 4:27 PM, Andrey Ryabinin <a.ryabinin@samsung.com> wrote: >>>> >>>>> I used vexpress. Anyway, it doesn't matter now, since I have an update >>>>> with a lot of stuff fixed, and it works on hardware. >>>>> I still need to do some work on it and tomorrow, probably, I will share. >>>> >>>> Ah awesome. I have a stash of ARM boards so I can test it on a >>>> range of hardware once you feel it's ready. >>>> >>>> Sorry for pulling stuff out of your hands, people are excited about >>>> KASan ARM32 as it turns out. >>> >>> People may be excited about it because it's a new feature, but we really >>> need to consider whether gobbling up 512MB of userspace for it is a good >>> idea or not. There are programs around which like to map large amounts >>> of memory into their process space, and the more we steal from them, the >>> more likely these programs are to fail. >> >> I looked at some different approaches over the last weeks for this >> when playing around with KASan. >> >> It seems since KASan was developed on 64bit systems, this was >> not much of an issue for them as they could take their shadow >> memory from the vmalloc space. >> >> I think it is possible to actually just steal as much memory as is >> needed to cover the kernel, and not 1/8 of the entire addressable >> 32bit space. So instead of covering all from 0x0-0xffffffff >> at least just MODULES_VADDR thru 0xffffffff should be enough. >> So if that is 0xbf000000-0xffffffff in most cases, 0x41000000 >> bytes, then 1/8 of that, 0x8200000, 130MB should be enough. >> (Andrey need to say if this is possible.) >> > > Yes, ~130Mb (3G/1G split) should work. 512Mb shadow is optional. > The only advantage of 512Mb shadow is better handling of user memory > accesses bugs > (access to user memory without copy_from_user/copy_to_user/strlen_user etc API). > In case of 512Mb shadow we could to not map anything in shadow for > user addresses, so such bug will > guarantee to crash the kernel. > In case of 130Mb, the behavior will depend on memory layout of the > current process. > So, I think it's fine to keep shadow only for kernel addresses. Another option would be having "sparse" shadow memory based on page extension. I did play with that some time ago based on ideas from original v1 KASan support for x86/arm - it is how 614be38 "irqchip: gic-v3: Fix out of bounds access to cpu_logical_map" was caught. It doesn't require any VA reservations, only some contiguous memory for the page_ext itself, which serves as indirection level for the 0-order shadow pages. In theory such design can be reused by others 32-bit arches and, I think, nommu too. Additionally, the shadow pages might be movable with help of driver-page migration patch series [1]. The cost is obvious - performance drop, although I didn't bother measuring it. [1] https://lwn.net/Articles/650917/ Cheers Vladimir > >> That will probably miss some usecases I'm not familiar with, where >> the kernel is actually executing something below 0xbf000000... >> >> I looked at taking memory from vmalloc instead, but ran into >> problems since this is subject to the highmem split and KASan >> need to have it's address offset at compile time. On >> Ux500 I managed to remove all the static maps and steal memory >> from the top of the vmalloc area instead of the beginning, but >> that is probably not generally feasible. >> >> I suspect you have better ideas than what I can come up >> with though. >> >> Yours, >> Linus Walleij > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andrey Ryabinin <ryabinin.a.a@gmail.com> |
|---|---|
| Date | 2015-08-24 18:10 +0200 |
| Message-ID | <q12tR-4cs-9@gated-at.bofh.it> |
| In reply to | #1212322 |
2015-08-24 18:44 GMT+03:00 Vladimir Murzin <vladimir.murzin@arm.com>: > > Another option would be having "sparse" shadow memory based on page > extension. I did play with that some time ago based on ideas from > original v1 KASan support for x86/arm - it is how 614be38 "irqchip: > gic-v3: Fix out of bounds access to cpu_logical_map" was caught. > It doesn't require any VA reservations, only some contiguous memory for > the page_ext itself, which serves as indirection level for the 0-order > shadow pages. We won't be able to use inline instrumentation (I could live with that), and most importantly, we won't be able to use stack instrumentation. GCC needs to know shadow address for inline and/or stack instrumentation to generate correct code. > In theory such design can be reused by others 32-bit arches and, I > think, nommu too. Additionally, the shadow pages might be movable with > help of driver-page migration patch series [1]. > The cost is obvious - performance drop, although I didn't bother > measuring it. > > [1] https://lwn.net/Articles/650917/ > > Cheers > Vladimir > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Vladimir Murzin <vladimir.murzin@arm.com> |
|---|---|
| Date | 2015-08-24 18:20 +0200 |
| Message-ID | <q12Dv-4nE-3@gated-at.bofh.it> |
| In reply to | #1212327 |
On 24/08/15 17:00, Andrey Ryabinin wrote: > 2015-08-24 18:44 GMT+03:00 Vladimir Murzin <vladimir.murzin@arm.com>: >> >> Another option would be having "sparse" shadow memory based on page >> extension. I did play with that some time ago based on ideas from >> original v1 KASan support for x86/arm - it is how 614be38 "irqchip: >> gic-v3: Fix out of bounds access to cpu_logical_map" was caught. >> It doesn't require any VA reservations, only some contiguous memory for >> the page_ext itself, which serves as indirection level for the 0-order >> shadow pages. > > We won't be able to use inline instrumentation (I could live with that), > and most importantly, we won't be able to use stack instrumentation. > GCC needs to know shadow address for inline and/or stack instrumentation > to generate correct code. It's definitely a trade-off ;) Just for my understanding does that stack instrumentation is controlled via -asan-stack? Thanks Vladimir > >> In theory such design can be reused by others 32-bit arches and, I >> think, nommu too. Additionally, the shadow pages might be movable with >> help of driver-page migration patch series [1]. >> The cost is obvious - performance drop, although I didn't bother >> measuring it. >> >> [1] https://lwn.net/Articles/650917/ >> >> Cheers >> Vladimir >> > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andrey Ryabinin <ryabinin.a.a@gmail.com> |
|---|---|
| Date | 2015-08-24 18:20 +0200 |
| Message-ID | <q12Dv-4nE-5@gated-at.bofh.it> |
| In reply to | #1212331 |
2015-08-24 19:16 GMT+03:00 Vladimir Murzin <vladimir.murzin@arm.com>: > On 24/08/15 17:00, Andrey Ryabinin wrote: >> 2015-08-24 18:44 GMT+03:00 Vladimir Murzin <vladimir.murzin@arm.com>: >>> >>> Another option would be having "sparse" shadow memory based on page >>> extension. I did play with that some time ago based on ideas from >>> original v1 KASan support for x86/arm - it is how 614be38 "irqchip: >>> gic-v3: Fix out of bounds access to cpu_logical_map" was caught. >>> It doesn't require any VA reservations, only some contiguous memory for >>> the page_ext itself, which serves as indirection level for the 0-order >>> shadow pages. >> >> We won't be able to use inline instrumentation (I could live with that), >> and most importantly, we won't be able to use stack instrumentation. >> GCC needs to know shadow address for inline and/or stack instrumentation >> to generate correct code. > > It's definitely a trade-off ;) > > Just for my understanding does that stack instrumentation is controlled > via -asan-stack? > Yup. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Russell King - ARM Linux <linux@arm.linux.org.uk> |
|---|---|
| Date | 2015-08-24 19:50 +0200 |
| Message-ID | <q142C-6gB-17@gated-at.bofh.it> |
| In reply to | #1212232 |
On Mon, Aug 24, 2015 at 05:15:22PM +0300, Andrey Ryabinin wrote: > Yes, ~130Mb (3G/1G split) should work. 512Mb shadow is optional. > The only advantage of 512Mb shadow is better handling of user memory > accesses bugs > (access to user memory without copy_from_user/copy_to_user/strlen_user etc API). No need for that to be handed by KASan. I have patches in linux-next, now acked by Will, which prevent the kernel accessing userspace with zero memory footprint. No need for remapping, we have a way to quickly turn off access to userspace mapped pages on non-LPAE 32-bit CPUs. (LPAE is not supported yet - Catalin will be working on that using the hooks I'm providing once he returns.) This isn't a debugging thing, it's a security hardening thing. Some use-after-free bugs are potentially exploitable from userspace. See the recent blackhat conference paper. -- FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up according to speedtest.net. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Will Deacon <will.deacon@arm.com> |
|---|---|
| Date | 2015-08-25 11:20 +0200 |
| Message-ID | <q1iyE-2ao-65@gated-at.bofh.it> |
| In reply to | #1212385 |
On Mon, Aug 24, 2015 at 06:47:36PM +0100, Russell King - ARM Linux wrote: > On Mon, Aug 24, 2015 at 05:15:22PM +0300, Andrey Ryabinin wrote: > > Yes, ~130Mb (3G/1G split) should work. 512Mb shadow is optional. > > The only advantage of 512Mb shadow is better handling of user memory > > accesses bugs > > (access to user memory without copy_from_user/copy_to_user/strlen_user etc API). > > No need for that to be handed by KASan. I have patches in linux-next, > now acked by Will, which prevent the kernel accessing userspace with > zero memory footprint. No need for remapping, we have a way to quickly > turn off access to userspace mapped pages on non-LPAE 32-bit CPUs. > (LPAE is not supported yet - Catalin will be working on that using the > hooks I'm providing once he returns.) Hey, I only acked the "Efficiency cleanups" series so far! The PAN emulation is still on my list. Will -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web