lkml.org 
[lkml]   [2022]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 075/112] net/tls: Check for errors in tls_device_init
    Date
    From: Tariq Toukan <tariqt@nvidia.com>

    [ Upstream commit 3d8c51b25a235e283e37750943bbf356ef187230 ]

    Add missing error checks in tls_device_init.

    Fixes: e8f69799810c ("net/tls: Add generic NIC offload infrastructure")
    Reported-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://lore.kernel.org/r/20220714070754.1428-1-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    include/net/tls.h | 4 ++--
    net/tls/tls_device.c | 4 ++--
    net/tls/tls_main.c | 7 ++++++-
    3 files changed, 10 insertions(+), 5 deletions(-)

    diff --git a/include/net/tls.h b/include/net/tls.h
    index 745b3bc6ce91..d9cb597cab46 100644
    --- a/include/net/tls.h
    +++ b/include/net/tls.h
    @@ -707,7 +707,7 @@ int tls_sw_fallback_init(struct sock *sk,
    struct tls_crypto_info *crypto_info);

    #ifdef CONFIG_TLS_DEVICE
    -void tls_device_init(void);
    +int tls_device_init(void);
    void tls_device_cleanup(void);
    void tls_device_sk_destruct(struct sock *sk);
    int tls_set_device_offload(struct sock *sk, struct tls_context *ctx);
    @@ -727,7 +727,7 @@ static inline bool tls_is_sk_rx_device_offloaded(struct sock *sk)
    return tls_get_ctx(sk)->rx_conf == TLS_HW;
    }
    #else
    -static inline void tls_device_init(void) {}
    +static inline int tls_device_init(void) { return 0; }
    static inline void tls_device_cleanup(void) {}

    static inline int
    diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c
    index 3c82286e5bcc..6ae2ce411b4b 100644
    --- a/net/tls/tls_device.c
    +++ b/net/tls/tls_device.c
    @@ -1390,9 +1390,9 @@ static struct notifier_block tls_dev_notifier = {
    .notifier_call = tls_dev_event,
    };

    -void __init tls_device_init(void)
    +int __init tls_device_init(void)
    {
    - register_netdevice_notifier(&tls_dev_notifier);
    + return register_netdevice_notifier(&tls_dev_notifier);
    }

    void __exit tls_device_cleanup(void)
    diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c
    index 58d22d6b86ae..e537085b184f 100644
    --- a/net/tls/tls_main.c
    +++ b/net/tls/tls_main.c
    @@ -905,7 +905,12 @@ static int __init tls_register(void)
    if (err)
    return err;

    - tls_device_init();
    + err = tls_device_init();
    + if (err) {
    + unregister_pernet_subsys(&tls_proc_ops);
    + return err;
    + }
    +
    tcp_register_ulp(&tcp_tls_ulp_ops);

    return 0;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-07-19 14:25    [W:4.084 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site