Re: [ 82/89] netfilter: xt_hashlimit: fix race that results induplicated entries

From: Greg Kroah-Hartman
Date: Fri Feb 01 2013 - 10:30:26 EST


On Fri, Feb 01, 2013 at 11:04:36PM +0800, Feng Gao wrote:
> Hi Greg,
>
> I have a question.
>
> There are two duplicated lines now.
>                        dh->expires = now + msecs_to_jiffies(hinfo->cfg.expire);
>                        rateinfo_recalc(dh, now, hinfo->cfg.mode);
> 1# case: The dsthash_find return a valid dh;
> 2# case: There is a race. The race is true.
>
> Why we could not adopt the method I sent before. 
>
>     dh = dsthash_find(hinfo, &dst);
>     if (dh == NULL) {
>         dh = dsthash_alloc_init(hinfo, &dst, &new_node);
>         if (dh == NULL) {
>             rcu_read_unlock_bh();
>             goto hotdrop;
>         }
>     }
>
>     if (new_node) {
>         dh->expires = jiffies + msecs_to_jiffies(hinfo->cfg.expire);
>         rateinfo_init(dh, hinfo);
>     } else {
>         /* update expiration timeout */
>         dh->expires = now + msecs_to_jiffies(hinfo->cfg.expire);
>         rateinfo_recalc(dh, now, hinfo->cfg.mode);
>     }
>
> I think it could avoid the two duplicated lines.

But this patch the same as what is in Linus's tree, right? If not,
please let me know. If it is the same, and you want to change it, it
needs to be changed in Linus's tree first before I can do anything in
the stable kernels.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/