From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King - ARM Linux Subject: Re: netfilter: active obj WARN when cleaning up Date: Wed, 27 Nov 2013 13:32:31 +0000 Message-ID: <20131127133231.GO16735@n2100.arm.linux.org.uk> References: <522B25B5.6000808@oracle.com> <5294F27D.4000108@oracle.com> <20131126230709.GA10948@localhost> <20131127113939.GL16735@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Pablo Neira Ayuso , Sasha Levin , Patrick McHardy , kadlec@blackhole.kfki.hu, "David S. Miller" , netfilter-devel@vger.kernel.org, coreteam@netfilter.org, netdev@vger.kernel.org, LKML , linux-mm@kvack.org, Andrew Morton , Christoph Lameter , Greg KH To: Thomas Gleixner Return-path: Content-Disposition: inline In-Reply-To: Sender: netdev-owner@vger.kernel.org List-Id: netfilter-devel.vger.kernel.org On Wed, Nov 27, 2013 at 02:29:41PM +0100, Thomas Gleixner wrote: > Though the kobject is the only thing which has a delayed work embedded > inside struct kmem_cache. And the debug object splat points at the > kmem_cache_free() of the struct kmem_cache itself. That's why I > assumed the wreckage around that place. And indeed: > > kmem_cache_destroy(s) > __kmem_cache_shutdown(s) > sysfs_slab_remove(s) > .... > kobject_put(&s->kobj) > kref_put(&kobj->kref, kobject_release); > kobject_release(kref) > #ifdef CONFIG_DEBUG_KOBJECT_RELEASE > schedule_delayed_work(&kobj->release) > #else > kobject_cleanup(kobj) > #endif > > So in the CONFIG_DEBUG_KOBJECT_RELEASE=y case, schedule_delayed_work() > _IS_ called which arms the timer. debugobjects catches the attempt to > free struct kmem_cache which contains the armed timer. You fail to show where the free is in the above path.