Matthew Wilcox
2018-Apr-24 17:16 UTC
[PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG
On Tue, Apr 24, 2018 at 08:29:14AM -0400, Mikulas Patocka wrote:> > > On Mon, 23 Apr 2018, Matthew Wilcox wrote: > > > On Mon, Apr 23, 2018 at 08:06:16PM -0400, Mikulas Patocka wrote: > > > Some bugs (such as buffer overflows) are better detected > > > with kmalloc code, so we must test the kmalloc path too. > > > > Well now, this brings up another item for the collective TODO list -- > > implement redzone checks for vmalloc. Unless this is something already > > taken care of by kasan or similar. > > The kmalloc overflow testing is also not ideal - it rounds the size up to > the next slab size and detects buffer overflows only at this boundary. > > Some times ago, I made a "kmalloc guard" patch that places a magic number > immediatelly after the requested size - so that it can detect overflows at > byte boundary > ( https://www.redhat.com/archives/dm-devel/2014-September/msg00018.html ) > > That patch found a bug in crypto code: > ( http://lkml.iu.edu/hypermail/linux/kernel/1409.1/02325.html )Is it still worth doing this, now we have kasan?
Mikulas Patocka
2018-Apr-24 18:41 UTC
[PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG
On Tue, 24 Apr 2018, Matthew Wilcox wrote:> On Tue, Apr 24, 2018 at 08:29:14AM -0400, Mikulas Patocka wrote: > > > > > > On Mon, 23 Apr 2018, Matthew Wilcox wrote: > > > > > On Mon, Apr 23, 2018 at 08:06:16PM -0400, Mikulas Patocka wrote: > > > > Some bugs (such as buffer overflows) are better detected > > > > with kmalloc code, so we must test the kmalloc path too. > > > > > > Well now, this brings up another item for the collective TODO list -- > > > implement redzone checks for vmalloc. Unless this is something already > > > taken care of by kasan or similar. > > > > The kmalloc overflow testing is also not ideal - it rounds the size up to > > the next slab size and detects buffer overflows only at this boundary. > > > > Some times ago, I made a "kmalloc guard" patch that places a magic number > > immediatelly after the requested size - so that it can detect overflows at > > byte boundary > > ( https://www.redhat.com/archives/dm-devel/2014-September/msg00018.html ) > > > > That patch found a bug in crypto code: > > ( http://lkml.iu.edu/hypermail/linux/kernel/1409.1/02325.html ) > > Is it still worth doing this, now we have kasan?The kmalloc guard has much lower overhead than kasan. (BTW. when I tried kasan, it oopsed with persistent memory) Mikulas
Joonsoo Kim
2018-May-15 01:13 UTC
[PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG
Hello, Mikulas. On Tue, Apr 24, 2018 at 02:41:47PM -0400, Mikulas Patocka wrote:> > > On Tue, 24 Apr 2018, Matthew Wilcox wrote: > > > On Tue, Apr 24, 2018 at 08:29:14AM -0400, Mikulas Patocka wrote: > > > > > > > > > On Mon, 23 Apr 2018, Matthew Wilcox wrote: > > > > > > > On Mon, Apr 23, 2018 at 08:06:16PM -0400, Mikulas Patocka wrote: > > > > > Some bugs (such as buffer overflows) are better detected > > > > > with kmalloc code, so we must test the kmalloc path too. > > > > > > > > Well now, this brings up another item for the collective TODO list -- > > > > implement redzone checks for vmalloc. Unless this is something already > > > > taken care of by kasan or similar. > > > > > > The kmalloc overflow testing is also not ideal - it rounds the size up to > > > the next slab size and detects buffer overflows only at this boundary. > > > > > > Some times ago, I made a "kmalloc guard" patch that places a magic number > > > immediatelly after the requested size - so that it can detect overflows at > > > byte boundary > > > ( https://www.redhat.com/archives/dm-devel/2014-September/msg00018.html ) > > > > > > That patch found a bug in crypto code: > > > ( http://lkml.iu.edu/hypermail/linux/kernel/1409.1/02325.html ) > > > > Is it still worth doing this, now we have kasan? > > The kmalloc guard has much lower overhead than kasan.I skimm at your code and it requires rebuilding the kernel. I think that if rebuilding is required as the same with the KASAN, using the KASAN is better since it has far better coverage for detection the bug. However, I think that if the redzone can be setup tightly without rebuild, it would be worth implementing. I have an idea to implement it only for the SLUB. Could I try it? (I'm asking this because I'm inspired from the above patch.) :) Or do you wanna try it? Thanks.
Maybe Matching Threads
- [PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG
- [PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG
- [PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG
- [PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG
- [PATCH v3] kvmalloc: always use vmalloc if CONFIG_DEBUG_SG