Message ID | 20190710044748.3924-1-natechancellor@gmail.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [v2] net/mlx5e: Refactor switch statements to avoid using uninitialized variables | expand |
On Tue, Jul 09, 2019 at 09:47:49PM -0700, Nathan Chancellor wrote: > clang warns: > > drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c:251:2: > warning: variable 'rec_seq_sz' is used uninitialized whenever switch > default is taken [-Wsometimes-uninitialized] > default: > ^~~~~~~ > drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c:255:46: note: > uninitialized use occurs here > skip_static_post = !memcmp(rec_seq, &rn_be, rec_seq_sz); > ^~~~~~~~~~ > drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c:239:16: note: > initialize the variable 'rec_seq_sz' to silence this warning > u16 rec_seq_sz; > ^ > = 0 > 1 warning generated. > > The default case statement should return in tx_post_resync_params like > in fill_static_params_ctx. However, as Nick and Leon point out, the > switch statements converted into if statements to clean up the code a > bit since there is only one cipher supported. Do that to clear up the > code. > > Fixes: d2ead1f360e8 ("net/mlx5e: Add kTLS TX HW offload support") > Link: https://github.com/ClangBuiltLinux/linux/issues/590 > Suggested-by: Leon Romanovsky <leon@kernel.org> > Suggested-by: Nick Desaulniers <ndesaulniers@google.com> > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > --- > > v1 -> v2: > > * Refactor switch statements into if statements > > .../mellanox/mlx5/core/en_accel/ktls_tx.c | 33 +++++++------------ > 1 file changed, 11 insertions(+), 22 deletions(-) > Thanks, Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
I applied your simpler addition of the return statement so that I could get the net-next pull request out tonight, just FYI...
On Tue, Jul 09, 2019 at 10:36:57PM -0700, David Miller wrote: > > I applied your simpler addition of the return statement so that I could > get the net-next pull request out tonight, just FYI... Thanks for the heads up, I'll spin up a v3 just focusing on the refactoring. Cheers, Nathan
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c index 3f5f4317a22b..ea032f54197e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c @@ -25,23 +25,17 @@ static void fill_static_params_ctx(void *ctx, struct mlx5e_ktls_offload_context_tx *priv_tx) { struct tls_crypto_info *crypto_info = priv_tx->crypto_info; + struct tls12_crypto_info_aes_gcm_128 *info; char *initial_rn, *gcm_iv; u16 salt_sz, rec_seq_sz; char *salt, *rec_seq; u8 tls_version; - switch (crypto_info->cipher_type) { - case TLS_CIPHER_AES_GCM_128: { - struct tls12_crypto_info_aes_gcm_128 *info = - (struct tls12_crypto_info_aes_gcm_128 *)crypto_info; - - EXTRACT_INFO_FIELDS; - break; - } - default: - WARN_ON(1); + if (WARN_ON(crypto_info->cipher_type != TLS_CIPHER_AES_GCM_128)) return; - } + + info = (struct tls12_crypto_info_aes_gcm_128 *)crypto_info; + EXTRACT_INFO_FIELDS; gcm_iv = MLX5_ADDR_OF(tls_static_params, ctx, gcm_iv); initial_rn = MLX5_ADDR_OF(tls_static_params, ctx, initial_record_number); @@ -234,23 +228,18 @@ tx_post_resync_params(struct mlx5e_txqsq *sq, u64 rcd_sn) { struct tls_crypto_info *crypto_info = priv_tx->crypto_info; + struct tls12_crypto_info_aes_gcm_128 *info; __be64 rn_be = cpu_to_be64(rcd_sn); bool skip_static_post; u16 rec_seq_sz; char *rec_seq; - switch (crypto_info->cipher_type) { - case TLS_CIPHER_AES_GCM_128: { - struct tls12_crypto_info_aes_gcm_128 *info = - (struct tls12_crypto_info_aes_gcm_128 *)crypto_info; + if (WARN_ON(crypto_info->cipher_type != TLS_CIPHER_AES_GCM_128)) + return; - rec_seq = info->rec_seq; - rec_seq_sz = sizeof(info->rec_seq); - break; - } - default: - WARN_ON(1); - } + info = (struct tls12_crypto_info_aes_gcm_128 *)crypto_info; + rec_seq = info->rec_seq; + rec_seq_sz = sizeof(info->rec_seq); skip_static_post = !memcmp(rec_seq, &rn_be, rec_seq_sz); if (!skip_static_post)
clang warns: drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c:251:2: warning: variable 'rec_seq_sz' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized] default: ^~~~~~~ drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c:255:46: note: uninitialized use occurs here skip_static_post = !memcmp(rec_seq, &rn_be, rec_seq_sz); ^~~~~~~~~~ drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c:239:16: note: initialize the variable 'rec_seq_sz' to silence this warning u16 rec_seq_sz; ^ = 0 1 warning generated. The default case statement should return in tx_post_resync_params like in fill_static_params_ctx. However, as Nick and Leon point out, the switch statements converted into if statements to clean up the code a bit since there is only one cipher supported. Do that to clear up the code. Fixes: d2ead1f360e8 ("net/mlx5e: Add kTLS TX HW offload support") Link: https://github.com/ClangBuiltLinux/linux/issues/590 Suggested-by: Leon Romanovsky <leon@kernel.org> Suggested-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> --- v1 -> v2: * Refactor switch statements into if statements .../mellanox/mlx5/core/en_accel/ktls_tx.c | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-)