2015-06-02 02:43:51

by Hideaki Yoshifuji

[permalink] [raw]
Subject: Re: [PATCH] neighbour: Convert if statment in the function, neigh_add_timer to a WARN_ON

Nicholas Krause wrote:
> This converts the if statement for dumping the stack into a
> WARN_ON in order to make this function's debugging check
> simpler and have a cleaner output when this condition
> occurs inside this function for when bugs related to
> adding a duplicate neighbour table timer arise.
>
> Signed-off-by: Nicholas Krause <[email protected]>
> ---
> net/core/neighbour.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/net/core/neighbour.c b/net/core/neighbour.c
> index 3de6542..0bf71da 100644
> --- a/net/core/neighbour.c
> +++ b/net/core/neighbour.c
> @@ -165,11 +165,7 @@ static int neigh_forced_gc(struct neigh_table *tbl)
> static void neigh_add_timer(struct neighbour *n, unsigned long when)
> {
> neigh_hold(n);
> - if (unlikely(mod_timer(&n->timer, when))) {
> - printk("NEIGH: BUG, double timer add, state is %x\n",
> - n->nud_state);
> - dump_stack();
> - }
> + WARN_ON(unlikely(mod_timer(&n->timer, when)));
> }

NACK, please do not use WARN_ON for things with side effects.

--yoshfuji


2015-06-02 03:37:31

by Cong Wang

[permalink] [raw]
Subject: Re: [PATCH] neighbour: Convert if statment in the function, neigh_add_timer to a WARN_ON

On Mon, Jun 1, 2015 at 7:37 PM, YOSHIFUJI Hideaki/吉藤英明
<[email protected]> wrote:
> Nicholas Krause wrote:
>> This converts the if statement for dumping the stack into a
>> WARN_ON in order to make this function's debugging check
>> simpler and have a cleaner output when this condition
>> occurs inside this function for when bugs related to
>> adding a duplicate neighbour table timer arise.
>>
>> Signed-off-by: Nicholas Krause <[email protected]>
>> ---
>> net/core/neighbour.c | 6 +-----
>> 1 file changed, 1 insertion(+), 5 deletions(-)
>>
>> diff --git a/net/core/neighbour.c b/net/core/neighbour.c
>> index 3de6542..0bf71da 100644
>> --- a/net/core/neighbour.c
>> +++ b/net/core/neighbour.c
>> @@ -165,11 +165,7 @@ static int neigh_forced_gc(struct neigh_table *tbl)
>> static void neigh_add_timer(struct neighbour *n, unsigned long when)
>> {
>> neigh_hold(n);
>> - if (unlikely(mod_timer(&n->timer, when))) {
>> - printk("NEIGH: BUG, double timer add, state is %x\n",
>> - n->nud_state);
>> - dump_stack();
>> - }
>> + WARN_ON(unlikely(mod_timer(&n->timer, when)));
>> }
>
> NACK, please do not use WARN_ON for things with side effects.

Just:

int ret = mod_timer(...);
WARN_ON(ret);
...