Subject: Re: [PATCH][NET_SCHED] cls_u32: refcounting fix for u32_delete()

From: Patrick McHardy <[email-masked]>
Date: Fri, 11 Apr 2008 14:55:27 +0200

Jarek Poplawski wrote:
> [NET_SCHED] cls_u32: refcounting fix for u32_delete()
> 
> @@ -441,8 +443,10 @@ static int u32_delete(struct tcf_proto *tp, unsigned long arg)
>  	if (tp->root == ht)
>  		return -EINVAL;
>  
> -	if (--ht->refcnt == 0)
> +	if (ht->refcnt == 1) {
> +		ht->refcnt--;
>  		u32_destroy_hnode(tp, ht);
> +	}
>  

Shouldn't the refcount be decremented unconditionally?
Otherwise I'd suggest to reject the removal if refcnt > 1,
but silently doing nothing doesn't seem right.