lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 569/800] net: macsec: fix the length used to copy the key for offloading
    Date
    From: Antoine Tenart <atenart@kernel.org>

    [ Upstream commit 1f7fe5121127e037b86592ba42ce36515ea0e3f7 ]

    The key length used when offloading macsec to Ethernet or PHY drivers
    was set to MACSEC_KEYID_LEN (16), which is an issue as:
    - This was never meant to be the key length.
    - The key length can be > 16.

    Fix this by using MACSEC_MAX_KEY_LEN to store the key (the max length
    accepted in uAPI) and secy->key_len to copy it.

    Fixes: 3cf3227a21d1 ("net: macsec: hardware offloading infrastructure")
    Reported-by: Lior Nahmanson <liorna@nvidia.com>
    Signed-off-by: Antoine Tenart <atenart@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/macsec.c | 4 ++--
    include/net/macsec.h | 2 +-
    2 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
    index 92425e1fd70c..93dc48b9b4f2 100644
    --- a/drivers/net/macsec.c
    +++ b/drivers/net/macsec.c
    @@ -1819,7 +1819,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info)
    ctx.sa.rx_sa = rx_sa;
    ctx.secy = secy;
    memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
    - MACSEC_KEYID_LEN);
    + secy->key_len);

    err = macsec_offload(ops->mdo_add_rxsa, &ctx);
    if (err)
    @@ -2061,7 +2061,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info)
    ctx.sa.tx_sa = tx_sa;
    ctx.secy = secy;
    memcpy(ctx.sa.key, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
    - MACSEC_KEYID_LEN);
    + secy->key_len);

    err = macsec_offload(ops->mdo_add_txsa, &ctx);
    if (err)
    diff --git a/include/net/macsec.h b/include/net/macsec.h
    index 52874cdfe226..d6fa6b97f6ef 100644
    --- a/include/net/macsec.h
    +++ b/include/net/macsec.h
    @@ -241,7 +241,7 @@ struct macsec_context {
    struct macsec_rx_sc *rx_sc;
    struct {
    unsigned char assoc_num;
    - u8 key[MACSEC_KEYID_LEN];
    + u8 key[MACSEC_MAX_KEY_LEN];
    union {
    struct macsec_rx_sa *rx_sa;
    struct macsec_tx_sa *tx_sa;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 11:10    [W:3.327 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site