lkml.org 
[lkml]   [2019]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.1 277/405] cxgb3/l2t: Fix undefined behaviour
    Date
    [ Upstream commit 76497732932f15e7323dc805e8ea8dc11bb587cf ]

    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: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/chelsio/cxgb3/l2t.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/chelsio/cxgb3/l2t.h b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
    index c2fd323c40782..ea75f275023ff 100644
    --- 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,
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-05-30 06:31    [W:3.090 / U:0.536 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site