On 09/05/18 03:20, Marek Lindner wrote:
> On Sunday, May 6, 2018 4:23:37 AM HKT Sven Eckelmann wrote:
>>> * batadv_tt_tvlv_generate() - fill the tvlv buff with the tt entries from
>>> the *  specified tt hash
>>> * @bat_priv: the bat priv with all the soft interface information
>>> @@ -2934,6 +2969,7 @@ static void batadv_tt_tvlv_generate(struct
>>> batadv_priv *bat_priv, struct batadv_tvlv_tt_change *tt_change;
>>> struct hlist_head *head;
>>> u16 tt_tot, tt_num_entries = 0;
>>> +       int flags;
>>> u32 i;
>>>
>>> tt_tot = batadv_tt_entries(tt_len);
>>> @@ -2951,8 +2987,12 @@ static void batadv_tt_tvlv_generate(struct
>>> batadv_priv *bat_priv, if ((valid_cb) && (!valid_cb(tt_common_entry,
>>> cb_data)))
>>> continue;
>>>
>>> +                       flags = batadv_tt_get_flags(tt_common_entry,
>>> cb_data); +                       if (flags < 0)
>>> +                               continue;
>>
>> The second argument of batadv_tt_get_flags is a little bit tricky here. The
>> kernel-doc says that cb_data is "data passed to the filter function as
>> argument" and is of type "void *". But you are now using it here as if would
>> always be of type "struct batadv_orig_node *". This doesn't make problem 
>> for now because only two functions are using this argument - luckily they
>> are either set it to NULL or to "batadv_orig_node *".
>>
>> I would propose to make it clear that this argument must be
>> "struct batadv_orig_node *" and not an arbitrary argument which is only used
>> by the valid_cb callback.
> 
> I second that concern. An alternative suggestion: Modify 
> batadv_tt_local_valid() / batadv_tt_global_valid() to return the flags as 
> those functions already distinguish between the local and global case. 
> Moreover, you save the extra batadv_tt_global_orig_entry_find() call which 
> already happens in  batadv_tt_global_valid().

I like Marek's idea, but I'd suggest to change the name of the
tt_*_valid() functions to something a bit more generic.


Apart from that I agree that that the flags retrieval could directly be
done within the callback which already knows if we are in the local or
global case.

Cheers,


-- 
Antonio Quartulli

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to