lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 12 Dec 2011 09:17:47 +0200 (EET) From: Pekka Enberg <penberg@...nel.org> To: Christoph Lameter <cl@...ux.com> cc: David Rientjes <rientjes@...gle.com>, Eric Dumazet <eric.dumazet@...il.com>, linux-kernel@...r.kernel.org Subject: Re: slub: Lockout validation scans during freeing of object On Wed, 23 Nov 2011, Christoph Lameter wrote: > Eric tested this one. > > > Subject: slub: Lockout validation scans during freeing of object > > Slab validation can run right now while the slab free paths prepare > the redzone fields etc around the objects in preparation of the > actual freeing of the object. This can lead to false positives. > > Take the node lock unconditionally during free so that the validation > can examine objects without them being disturbed by freeing operations. > > Signed-off-by: Christoph Lameter <cl@...ux.com> > > --- > mm/slub.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > Index: linux-2.6/mm/slub.c > =================================================================== > --- linux-2.6.orig/mm/slub.c 2011-11-22 10:42:19.000000000 -0600 > +++ linux-2.6/mm/slub.c 2011-11-22 10:44:34.000000000 -0600 > @@ -2391,8 +2391,15 @@ static void __slab_free(struct kmem_cach > > stat(s, FREE_SLOWPATH); > > - if (kmem_cache_debug(s) && !free_debug_processing(s, page, x, addr)) > - return; > + if (kmem_cache_debug(s)) { > + > + /* Lock out any concurrent validate_slab calls */ > + n = get_node(s, page_to_nid(page)); > + spin_lock_irqsave(&n->list_lock, flags); > + > + if (!free_debug_processing(s, page, x, addr)) > + goto out; > + } > > do { > prior = page->freelist; > @@ -2471,6 +2478,7 @@ static void __slab_free(struct kmem_cach > stat(s, FREE_ADD_PARTIAL); > } > } > +out: > spin_unlock_irqrestore(&n->list_lock, flags); > return; Ditto. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists