Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1223795 > unrolled thread
| Started by | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| First post | 2015-09-14 04:20 +0200 |
| Last post | 2015-09-15 09:40 +0200 |
| Articles | 4 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH V2] kasan: use IS_ALIGNED in memory_is_poisoned_8() Xishi Qiu <qiuxishi@huawei.com> - 2015-09-14 04:20 +0200
Re: [PATCH V2] kasan: use IS_ALIGNED in memory_is_poisoned_8() Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-09-14 17:20 +0200
[PATCH V3] kasan: use IS_ALIGNED in memory_is_poisoned_8() Xishi Qiu <qiuxishi@huawei.com> - 2015-09-15 04:10 +0200
Re: [PATCH V3] kasan: use IS_ALIGNED in memory_is_poisoned_8() Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2015-09-15 09:40 +0200
| From | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2015-09-14 04:20 +0200 |
| Subject | [PATCH V2] kasan: use IS_ALIGNED in memory_is_poisoned_8() |
| Message-ID | <q8rx8-UX-3@gated-at.bofh.it> |
Use IS_ALIGNED() to determine whether the shadow span two bytes. It generates less code and more readable. Add some comments in shadow check functions. Please apply "kasan: fix last shadow judgement in memory_is_poisoned_16()" first. Signed-off-by: Xishi Qiu <qiuxishi@huawei.com> --- mm/kasan/kasan.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c index 8da2114..00d5605 100644 --- a/mm/kasan/kasan.c +++ b/mm/kasan/kasan.c @@ -86,6 +86,10 @@ static __always_inline bool memory_is_poisoned_2(unsigned long addr) if (memory_is_poisoned_1(addr + 1)) return true; + /* + * If the shadow spans two bytes, the first byte should + * be zero. + */ if (likely(((addr + 1) & KASAN_SHADOW_MASK) != 0)) return false; @@ -103,6 +107,10 @@ static __always_inline bool memory_is_poisoned_4(unsigned long addr) if (memory_is_poisoned_1(addr + 3)) return true; + /* + * If the shadow spans two bytes, the first byte should + * be zero. + */ if (likely(((addr + 3) & KASAN_SHADOW_MASK) >= 3)) return false; @@ -120,7 +128,11 @@ static __always_inline bool memory_is_poisoned_8(unsigned long addr) if (memory_is_poisoned_1(addr + 7)) return true; - if (likely(((addr + 7) & KASAN_SHADOW_MASK) >= 7)) + /* + * If the shadow spans two bytes, the first byte should + * be zero. + */ + if (likely(IS_ALIGNED(addr, KASAN_SHADOW_SCALE_SIZE))) return false; return unlikely(*(u8 *)shadow_addr); @@ -139,7 +151,12 @@ static __always_inline bool memory_is_poisoned_16(unsigned long addr) if (unlikely(shadow_first_bytes)) return true; - if (likely(IS_ALIGNED(addr, 8))) + /* + * If the shadow spans three bytes, we should continue to + * check the last byte. The first two bytes which we + * checked above should always be zero. + */ + if (likely(IS_ALIGNED(addr, KASAN_SHADOW_SCALE_SIZE))) return false; return memory_is_poisoned_1(addr + 15); -- 2.0.0 -- 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 | Andrey Ryabinin <ryabinin.a.a@gmail.com> |
|---|---|
| Date | 2015-09-14 17:20 +0200 |
| Message-ID | <q8DHY-1xe-25@gated-at.bofh.it> |
| In reply to | #1223795 |
2015-09-14 5:09 GMT+03:00 Xishi Qiu <qiuxishi@huawei.com>: > Use IS_ALIGNED() to determine whether the shadow span two bytes. > It generates less code and more readable. Add some comments in > shadow check functions. > > Please apply "kasan: fix last shadow judgement in memory_is_poisoned_16()" > first. > > Signed-off-by: Xishi Qiu <qiuxishi@huawei.com> > --- > mm/kasan/kasan.c | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c > index 8da2114..00d5605 100644 > --- a/mm/kasan/kasan.c > +++ b/mm/kasan/kasan.c > @@ -86,6 +86,10 @@ static __always_inline bool memory_is_poisoned_2(unsigned long addr) > if (memory_is_poisoned_1(addr + 1)) > return true; > > + /* > + * If the shadow spans two bytes, the first byte should > + * be zero. Hmm.. I found this comment a bit odd. How about this: /* * If single shadow byte covers 2-byte access, * we don't need to do anything more. * Otherwise, test the first shadow byte. */ ? -- 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 | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2015-09-15 04:10 +0200 |
| Subject | [PATCH V3] kasan: use IS_ALIGNED in memory_is_poisoned_8() |
| Message-ID | <q8NR0-7HD-17@gated-at.bofh.it> |
| In reply to | #1224228 |
Use IS_ALIGNED() to determine whether the shadow span two bytes. It generates less code and more readable. Also add some comments in shadow check functions. Please apply "kasan: fix last shadow judgement in memory_is_poisoned_16()" first. Signed-off-by: Xishi Qiu <qiuxishi@huawei.com> --- mm/kasan/kasan.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c index 8da2114..d0a3af8 100644 --- a/mm/kasan/kasan.c +++ b/mm/kasan/kasan.c @@ -86,6 +86,11 @@ static __always_inline bool memory_is_poisoned_2(unsigned long addr) if (memory_is_poisoned_1(addr + 1)) return true; + /* + * If single shadow byte covers 2-byte access, we don't + * need to do anything more. Otherwise, test the first + * shadow byte. + */ if (likely(((addr + 1) & KASAN_SHADOW_MASK) != 0)) return false; @@ -103,6 +108,11 @@ static __always_inline bool memory_is_poisoned_4(unsigned long addr) if (memory_is_poisoned_1(addr + 3)) return true; + /* + * If single shadow byte covers 4-byte access, we don't + * need to do anything more. Otherwise, test the first + * shadow byte. + */ if (likely(((addr + 3) & KASAN_SHADOW_MASK) >= 3)) return false; @@ -120,7 +130,12 @@ static __always_inline bool memory_is_poisoned_8(unsigned long addr) if (memory_is_poisoned_1(addr + 7)) return true; - if (likely(((addr + 7) & KASAN_SHADOW_MASK) >= 7)) + /* + * If single shadow byte covers 8-byte access, we don't + * need to do anything more. Otherwise, test the first + * shadow byte. + */ + if (likely(IS_ALIGNED(addr, KASAN_SHADOW_SCALE_SIZE))) return false; return unlikely(*(u8 *)shadow_addr); @@ -139,7 +154,12 @@ static __always_inline bool memory_is_poisoned_16(unsigned long addr) if (unlikely(shadow_first_bytes)) return true; - if (likely(IS_ALIGNED(addr, 8))) + /* + * If two shadow bytes covers 16-byte access, we don't + * need to do anything more. Otherwise, test the last + * shadow byte. + */ + if (likely(IS_ALIGNED(addr, KASAN_SHADOW_SCALE_SIZE))) return false; return memory_is_poisoned_1(addr + 15); -- 2.0.0 -- 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-09-15 09:40 +0200 |
| Subject | Re: [PATCH V3] kasan: use IS_ALIGNED in memory_is_poisoned_8() |
| Message-ID | <q8T0n-6AI-35@gated-at.bofh.it> |
| In reply to | #1224594 |
On 09/15/2015 05:02 AM, Xishi Qiu wrote: > Use IS_ALIGNED() to determine whether the shadow span two bytes. It > generates less code and more readable. Also add some comments in shadow > check functions. > > Please apply "kasan: fix last shadow judgement in memory_is_poisoned_16()" > first. > > Signed-off-by: Xishi Qiu <qiuxishi@huawei.com> Acked-by: Andrey Ryabinin <aryabinin@virtuozzo.com> -- 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