if (dst->flags&DST_NOHASH) 
if (nohash) 
struct dst_entry *dst_destroy(struct dst_entry * dst){	struct dst_entry *child;	struct neighbour *neigh;	struct hh_cache *hh;	smp_rmb();again:	neigh = dst->neighbour;	hh = dst->hh;	child = dst->child;	dst->hh = NULL;	if (hh && atomic_dec_and_test(&hh->hh_refcnt))		kfree(hh);	if (neigh) {		dst->neighbour = NULL;		neigh_release(neigh);	}	atomic_dec(&dst->ops->entries);	if (dst->ops->destroy)		dst->ops->destroy(dst);	if (dst->dev)		dev_put(dst->dev);#if RT_CACHE_DEBUG >= 2 	atomic_dec(&dst_total);#endif	kmem_cache_free(dst->ops->kmem_cachep, dst);	dst = child;	if (dst) {		if (atomic_dec_and_test(&dst->__refcnt)) {			/* We were real parent of this dst, so kill child. */			if (dst->flags&DST_NOHASH)				goto again;		} else {			/* Child is still referenced, return it for freeing. */			if (dst->flags&DST_NOHASH)				return dst;			/* Child is still in his hash table */		}	}	return NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/6775cab98b89b2caa10dce4b07e2c81999e45517/dst.c/buggy/net/core/dst.c