Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1736778
| From | Christopher Lameter <cl@linux.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v3 02/31] usercopy: Enforce slab cache usercopy region boundaries |
| Date | 2017-09-21 17:30 +0200 |
| Message-ID | <usbAn-2Ne-25@gated-at.bofh.it> (permalink) |
| References | <urU6t-818-3@gated-at.bofh.it> <urUga-855-39@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Wed, 20 Sep 2017, Kees Cook wrote: > diff --git a/mm/slab.c b/mm/slab.c > index 87b6e5e0cdaf..df268999cf02 100644 > --- a/mm/slab.c > +++ b/mm/slab.c > @@ -4408,7 +4408,9 @@ module_init(slab_proc_init); > > #ifdef CONFIG_HARDENED_USERCOPY > /* > - * Rejects objects that are incorrectly sized. > + * Rejects incorrectly sized objects and objects that are to be copied > + * to/from userspace but do not fall entirely within the containing slab > + * cache's usercopy region. > * > * Returns NULL if check passes, otherwise const char * to name of cache > * to indicate an error. > @@ -4428,11 +4430,15 @@ const char *__check_heap_object(const void *ptr, unsigned long n, > /* Find offset within object. */ > offset = ptr - index_to_obj(cachep, page, objnr) - obj_offset(cachep); > > - /* Allow address range falling entirely within object size. */ > - if (offset <= cachep->object_size && n <= cachep->object_size - offset) > - return NULL; > + /* Make sure object falls entirely within cache's usercopy region. */ > + if (offset < cachep->useroffset) > + return cachep->name; > + if (offset - cachep->useroffset > cachep->usersize) > + return cachep->name; > + if (n > cachep->useroffset - offset + cachep->usersize) > + return cachep->name; > > - return cachep->name; > + return NULL; > } > #endif /* CONFIG_HARDENED_USERCOPY */ Looks like this is almost the same for all allocators. Can we put this into mm/slab_common.c?
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v3 00/31] Hardened usercopy whitelisting Kees Cook <keescook@chromium.org> - 2017-09-20 22:50 +0200
[PATCH v3 26/31] fork: Provide usercopy whitelisting for task_struct Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 15/31] xfs: Define usercopy region in xfs_inode slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 07/31] ext4: Define usercopy region in ext4_inode_cache slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 29/31] arm: Implement thread_struct whitelist for hardened usercopy Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 25/31] fork: Define usercopy region in thread_stack slab caches Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 02/31] usercopy: Enforce slab cache usercopy region boundaries Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
Re: [PATCH v3 02/31] usercopy: Enforce slab cache usercopy region boundaries Christopher Lameter <cl@linux.com> - 2017-09-21 17:30 +0200
[PATCH v3 23/31] net: Restrict unwhitelisted proto caches to size 0 Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 17/31] scsi: Define usercopy region in scsi_sense_cache slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 19/31] ip: Define usercopy region in IP proto slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 28/31] arm64: Implement thread_struct whitelist for hardened usercopy Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 21/31] sctp: Define usercopy region in SCTP proto slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 31/31] lkdtm: Update usercopy tests for whitelisting Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 01/31] usercopy: Prepare for usercopy whitelisting Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
Re: [PATCH v3 01/31] usercopy: Prepare for usercopy whitelisting Christopher Lameter <cl@linux.com> - 2017-09-21 17:30 +0200
[PATCH v3 08/31] ext2: Define usercopy region in ext2_inode_cache slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 18/31] net: Define usercopy region in struct proto slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 24/31] fork: Define usercopy region in mm_struct slab caches Kees Cook <keescook@chromium.org> - 2017-09-20 23:00 +0200
[PATCH v3 04/31] dcache: Define usercopy region in dentry_cache slab cache Kees Cook <keescook@chromium.org> - 2017-09-20 23:10 +0200
[PATCH v3 27/31] x86: Implement thread_struct whitelist for hardened usercopy Kees Cook <keescook@chromium.org> - 2017-09-20 23:10 +0200
[PATCH v3 03/31] usercopy: Mark kmalloc caches as usercopy caches Kees Cook <keescook@chromium.org> - 2017-09-20 23:10 +0200
Re: [PATCH v3 03/31] usercopy: Mark kmalloc caches as usercopy caches Christopher Lameter <cl@linux.com> - 2017-09-21 17:30 +0200
Re: [kernel-hardening] Re: [PATCH v3 03/31] usercopy: Mark kmalloc caches as usercopy caches Kees Cook <keescook@chromium.org> - 2017-09-21 17:50 +0200
Re: [kernel-hardening] Re: [PATCH v3 03/31] usercopy: Mark kmalloc caches as usercopy caches Christopher Lameter <cl@linux.com> - 2017-09-21 18:10 +0200
Re: [kernel-hardening] Re: [PATCH v3 03/31] usercopy: Mark kmalloc caches as usercopy caches Kees Cook <keescook@chromium.org> - 2017-09-21 20:30 +0200
csiph-web