lkml.org 
[lkml]   [2019]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 015/132] cxgb3/l2t: Fix undefined behaviour
    3.16.74-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>

    commit 76497732932f15e7323dc805e8ea8dc11bb587cf upstream.

    The use of zero-sized array causes undefined behaviour when it is not
    the last member in a structure. As it happens to be in this case.

    Also, the current code makes use of a language extension to the C90
    standard, but the preferred mechanism to declare variable-length
    types such as this one is a flexible array member, introduced in
    C99:

    struct foo {
    int stuff;
    struct boo array[];
    };

    By making use of the mechanism above, we will get a compiler warning
    in case the flexible array does not occur last. Which is beneficial
    to cultivate a high-quality code.

    Fixes: e48f129c2f20 ("[SCSI] cxgb3i: convert cdev->l2opt to use rcu to prevent NULL dereference")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/net/ethernet/chelsio/cxgb3/l2t.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/net/ethernet/chelsio/cxgb3/l2t.h
    +++ b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
    @@ -75,8 +75,8 @@ struct l2t_data {
    struct l2t_entry *rover; /* starting point for next allocation */
    atomic_t nfree; /* number of free entries */
    rwlock_t lock;
    - struct l2t_entry l2tab[0];
    struct rcu_head rcu_head; /* to handle rcu cleanup */
    + struct l2t_entry l2tab[];
    };

    typedef void (*arp_failure_handler_func)(struct t3cdev * dev,
    \
     
     \ /
      Last update: 2019-09-20 16:39    [W:4.184 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site