Re: netfilter: active obj WARN when cleaning up
From: Greg KH <hidden>
Date: 2013-12-02 17:26:21
Also in:
linux-mm, lkml, netfilter-devel
On Mon, Dec 02, 2013 at 05:18:16PM +0000, Christoph Lameter wrote:
On Mon, 2 Dec 2013, Greg KH wrote:quoted
On Mon, Dec 02, 2013 at 04:33:20PM +0000, Christoph Lameter wrote:quoted
On Wed, 27 Nov 2013, Greg KH wrote:quoted
Just make the kobject "dynamic" instead of embedded in struct kmem_cache and all will be fine. I can't believe this code has been broken for this long.The slub code is was designed to use an embedded structure since we only get the kobj pointer passed to us from sysfs. If kobj is not embedded then how can we get from the sysfs object to the kmem_cache structure from the sysfs callbacks? Sysfs was designed to have embedded objects as far as I can recall.Yes, it's designed to have embedded objects, so then use it that way and clean up the structure when the kobject goes away. Don't use a different reference count for your structure than the one in the kobject and think that all will be fine.We need our own reference count. So we just have to defer the release of the kmem_cache struct until the ->release callback is triggered. The put of the embedded kobject must be the last action on the kmem_cache structure which will then trigger release and that will trigger the kmem_cache_free().
Ok, that sounds reasonable, or you can just create a "tiny" structure for the kobject that has a pointer back to your kmem_cache structure that you can then reference from the show/store functions. Either is fine with me. thanks, greg k-h -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>