--- linux-2.4.26/net/ipv4/netfilter/ipt_dstlimit.c.orig 2004-07-26 16:36:30.000000000 +0200 +++ linux-2.4.26/net/ipv4/netfilter/ipt_dstlimit.c 2004-07-27 09:56:18.000000000 +0200 @@ -83,7 +83,7 @@ struct ipt_dstlimit_htable { struct dstlimit_cfg cfg; /* config */ /* used internally */ - spinlock_t lock; /* lock for list_head */ + struct spinlock_debug lock; /* lock for list_head */ u_int32_t rnd; /* random seed for hash */ struct timer_list timer; /* timer for gc */ atomic_t count; /* number entries in table */ @@ -179,7 +179,8 @@ static int htable_create(struct ipt_dstl int i; unsigned int size; struct ipt_dstlimit_htable *hinfo; - + DECLARE_LOCK(lock_aux); + if (minfo->cfg.size) size = minfo->cfg.size; else { @@ -213,7 +214,8 @@ static int htable_create(struct ipt_dstl atomic_set(&hinfo->count, 0); atomic_set(&hinfo->use, 1); hinfo->rnd = 0; - hinfo->lock = SPIN_LOCK_UNLOCKED; +/* hinfo->lock = SPIN_LOCK_UNLOCKED; */ + hinfo->lock = lock_aux; hinfo->pde = create_proc_entry(minfo->name, 0, dstlimit_procdir); if (!hinfo->pde) { vfree(hinfo);