On 9/25/17, 2:51 AM, "Fischetti, Antonio" <[email protected]> wrote:

    > -----Original Message-----
    > From: Darrell Ball [mailto:[email protected]]
    > Sent: Friday, September 22, 2017 9:26 AM
    > To: Fischetti, Antonio <[email protected]>; [email protected]
    > Subject: Re: [ovs-dev] [PATCH 2/2] dpctl: init CT entry variable.
    > 
    > 
    > 
    > On 9/13/17, 5:37 AM, "[email protected] on behalf of
    > [email protected]" <[email protected] on behalf of
    > [email protected]> wrote:
    > 
    >     ct_dpif_entry_uninit could potentially be called even if
    >     ct_dpif_dump_next failed. As ct_dpif_entry_uninit receives
    >     a pointer to a CT entry - and just checks it is not null -
    >     it's safer to init to zero any instantiated ct_dpif_entry
    >     variable before its usage.
    > 
    > [Darrell] I took a look and did not see a particular problem.
    >                Was there an issue that we are trying to address?; if so, 
this
    > may hide it ?
    
    [Antonio]
    This change is more a matter of keeping safe habits for future
    code additions. 
    In a new CT function that could be added down the line, one could
    potentially call ct_dpif_entry_uninit without checking what was
    returned by ct_dpif_dump_next.
    
    As this is not in the hotpath, I added a memset to be extra-careful 
    when initializing the local CT entry variable.
    
    Maybe also a comment on top of the fn definition could help on this,
    something like?
    
    +/* This function must be called when the returned
    +   value from ct_dpif_dump_next is 0. */
    void
    ct_dpif_entry_uninit(struct ct_dpif_entry *entry)
    {
        if (entry) {
            if (entry->helper.name) {


[Darrell] It is usually better to wait for the new code that might need this and
               associate those patches as part of the same series.
               Can we do that ?
    
    
    
    > 
    > 
    >     Signed-off-by: Antonio Fischetti <[email protected]>
    >     ---
    >      lib/dpctl.c | 3 +++
    >      1 file changed, 3 insertions(+)
    > 
    >     diff --git a/lib/dpctl.c b/lib/dpctl.c
    >     index 86d0f90..77d4e58 100644
    >     --- a/lib/dpctl.c
    >     +++ b/lib/dpctl.c
    >     @@ -1287,6 +1287,7 @@ dpctl_dump_conntrack(int argc, const char 
*argv[],
    >              return error;
    >          }
    > 
    >     +    memset(&cte, 0, sizeof(cte));
    >          while (!(ret = ct_dpif_dump_next(dump, &cte))) {
    >              struct ds s = DS_EMPTY_INITIALIZER;
    > 
    >     @@ -1392,6 +1393,7 @@ dpctl_ct_stats_show(int argc, const char 
*argv[],
    >              return error;
    >          }
    > 
    >     +    memset(&cte, 0, sizeof(cte));
    >          int tot_conn = 0;
    >          while (!(ret = ct_dpif_dump_next(dump, &cte))) {
    >              ct_dpif_entry_uninit(&cte);
    >     @@ -1532,6 +1534,7 @@ dpctl_ct_bkts(int argc, const char *argv[],
    >               return 0;
    >          }
    > 
    >     +    memset(&cte, 0, sizeof(cte));
    >          dpctl_print(dpctl_p, "Total Buckets: %d\n", tot_bkts);
    > 
    >          int tot_conn = 0;
    >     --
    >     2.4.11
    > 
    >     _______________________________________________
    >     dev mailing list
    >     [email protected]
    >     https://urldefense.proofpoint.com/v2/url?u=https-
    > 3A__mail.openvswitch.org_mailman_listinfo_ovs-
    > 2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-
    > 
uZnsw&m=3FF1c4sa7rHZb5a1DAZQlnsPZywcY7R_LNFki9WS9So&s=tU4fSt243XI_2QHkAF4R2h0sm
    > vtTC8fDyiOXBI02_t8&e=
    > 
    
    

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to