lkml.org 
[lkml]   [2016]   [Mar]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH] batman-adv: Less function calls in batadv_is_ap_isolated() after error detection
    From
    Date
    From: Markus Elfring <elfring@users.sourceforge.net>
    Date: Fri, 11 Mar 2016 13:10:20 +0100

    The variables "tt_local_entry" and "tt_global_entry" were eventually
    checked again despite of a corresponding null pointer test before.

    * Avoid this double check by reordering a function call sequence
    and the better selection of jump targets.

    * Omit the initialisation for these variables at the beginning then.

    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    ---
    net/batman-adv/translation-table.c | 25 +++++++++++--------------
    1 file changed, 11 insertions(+), 14 deletions(-)

    diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
    index 0b43e86..9c0193ee 100644
    --- a/net/batman-adv/translation-table.c
    +++ b/net/batman-adv/translation-table.c
    @@ -3403,8 +3403,8 @@ void batadv_tt_local_commit_changes(struct batadv_priv *bat_priv)
    bool batadv_is_ap_isolated(struct batadv_priv *bat_priv, u8 *src, u8 *dst,
    unsigned short vid)
    {
    - struct batadv_tt_local_entry *tt_local_entry = NULL;
    - struct batadv_tt_global_entry *tt_global_entry = NULL;
    + struct batadv_tt_local_entry *tt_local_entry;
    + struct batadv_tt_global_entry *tt_global_entry;
    struct batadv_softif_vlan *vlan;
    bool ret = false;

    @@ -3413,27 +3413,24 @@ bool batadv_is_ap_isolated(struct batadv_priv *bat_priv, u8 *src, u8 *dst,
    return false;

    if (!atomic_read(&vlan->ap_isolation))
    - goto out;
    + goto vlan_put;

    tt_local_entry = batadv_tt_local_hash_find(bat_priv, dst, vid);
    if (!tt_local_entry)
    - goto out;
    + goto vlan_put;

    tt_global_entry = batadv_tt_global_hash_find(bat_priv, src, vid);
    if (!tt_global_entry)
    - goto out;
    -
    - if (!_batadv_is_ap_isolated(tt_local_entry, tt_global_entry))
    - goto out;
    + goto local_entry_put;

    - ret = true;
    + if (_batadv_is_ap_isolated(tt_local_entry, tt_global_entry))
    + ret = true;

    -out:
    + batadv_tt_global_entry_put(tt_global_entry);
    +local_entry_put:
    + batadv_tt_local_entry_put(tt_local_entry);
    +vlan_put:
    batadv_softif_vlan_put(vlan);
    - if (tt_global_entry)
    - batadv_tt_global_entry_put(tt_global_entry);
    - if (tt_local_entry)
    - batadv_tt_local_entry_put(tt_local_entry);
    return ret;
    }

    --
    2.7.2
    \
     
     \ /
      Last update: 2016-03-11 14:21    [W:2.069 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site