Pavel Emelyanov schrieb:
> This one is not that big, but is widely used: saves 1200 bytes 
> from net/ipv4/built-in.o
> +void inet_twsk_put(struct inet_timewait_sock *tw)
> +{
> +     if (atomic_dec_and_test(&tw->tw_refcnt)) {
> +             struct module *owner = tw->tw_prot->owner;
> +             twsk_destructor((struct sock *)tw);
> +#ifdef SOCK_REFCNT_DEBUG
> +             printk(KERN_DEBUG "%s timewait_sock %p released\n",
> +                    tw->tw_prot->name, tw);
> +#endif
> +             kmem_cache_free(tw->tw_prot->twsk_prot->twsk_slab, tw);
> +             module_put(owner);
> +     }
> +}
> +EXPORT_SYMBOL_GPL(inet_twsk_put);

More correct fix seems to be conversion to kref.

Just create out of line inet_twsk_release() containing
sth. similiar to the code inside these braces and modify 
inet_twsk_put() to sth. like this:

static inline inet_twsk_put(struct inet_timewait_sock *tw)
{
        kref_put(&tw->kref, inet_twsk_release);
}

David, can you see any reason (e.g. some crazy lock stuff) NOT to do this?


Best Regards

Ingo Oeser
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to