Message ID | 20201203222641.964234-1-arnd@kernel.org |
---|---|
State | New |
Headers | show |
Series | ch_ktls: fix build warning for ipv4-only config | expand |
On Thu, 3 Dec 2020 23:26:16 +0100 Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > When CONFIG_IPV6 is disabled, clang complains that a variable > is uninitialized for non-IPv4 data: > > drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:1046:6: error: variable 'cntrl1' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] > if (tx_info->ip_family == AF_INET) { > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:1059:2: note: uninitialized use occurs here > cntrl1 |= T6_TXPKT_ETHHDR_LEN_V(maclen - ETH_HLEN) | > ^~~~~~ > > Replace the preprocessor conditional with the corresponding C version, > and make the ipv4 case unconditional in this configuration to improve > readability and avoid the warning. > > Fixes: 86716b51d14f ("ch_ktls: Update cheksum information") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> This is for evrey clang build or just W=1+? Would be annoying if clang produced this on every build with 5.10 (we need to decide fix vs -next).
Hello: This patch was applied to netdev/net.git (refs/heads/master): On Thu, 3 Dec 2020 23:26:16 +0100 you wrote: > From: Arnd Bergmann <arnd@arndb.de> > > When CONFIG_IPV6 is disabled, clang complains that a variable > is uninitialized for non-IPv4 data: > > drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:1046:6: error: variable 'cntrl1' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] > if (tx_info->ip_family == AF_INET) { > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:1059:2: note: uninitialized use occurs here > cntrl1 |= T6_TXPKT_ETHHDR_LEN_V(maclen - ETH_HLEN) | > ^~~~~~ > > [...] Here is the summary with links: - ch_ktls: fix build warning for ipv4-only config https://git.kernel.org/netdev/net/c/a54ba3465d86 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
On Sat, Dec 5, 2020 at 2:57 AM Jakub Kicinski <kuba@kernel.org> wrote: > > On Thu, 3 Dec 2020 23:26:16 +0100 Arnd Bergmann wrote: > > From: Arnd Bergmann <arnd@arndb.de> > > > > When CONFIG_IPV6 is disabled, clang complains that a variable > > is uninitialized for non-IPv4 data: > > > > drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:1046:6: error: variable 'cntrl1' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] > > if (tx_info->ip_family == AF_INET) { > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c:1059:2: note: uninitialized use occurs here > > cntrl1 |= T6_TXPKT_ETHHDR_LEN_V(maclen - ETH_HLEN) | > > ^~~~~~ > > > > Replace the preprocessor conditional with the corresponding C version, > > and make the ipv4 case unconditional in this configuration to improve > > readability and avoid the warning. > > > > Fixes: 86716b51d14f ("ch_ktls: Update cheksum information") > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > This is for evrey clang build or just W=1+? Would be annoying if clang > produced this on every build with 5.10 (we need to decide fix vs -next). The -Wsometimes-uninitialized is enabled unconditionally for clang, but this only happens for IPv4-only configurations with IPv6 disabled, so most real configurations should not observe it, but the fix should still go into v5.10. Arnd
On Sun, 6 Dec 2020 00:18:44 +0100 Arnd Bergmann wrote: > > This is for evrey clang build or just W=1+? Would be annoying if clang > > produced this on every build with 5.10 (we need to decide fix vs -next). > > The -Wsometimes-uninitialized is enabled unconditionally for clang, > but this only happens for IPv4-only configurations with IPv6 disabled, > so most real configurations should not observe it, but the fix should still > go into v5.10. Great, I guessed correctly :)
diff --git a/drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c b/drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c index 7f90b828d159..1b7e8c91b541 100644 --- a/drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c +++ b/drivers/net/ethernet/chelsio/inline_crypto/ch_ktls/chcr_ktls.c @@ -987,9 +987,7 @@ chcr_ktls_write_tcp_options(struct chcr_ktls_info *tx_info, struct sk_buff *skb, struct fw_eth_tx_pkt_wr *wr; struct cpl_tx_pkt_core *cpl; u32 ctrl, iplen, maclen; -#if IS_ENABLED(CONFIG_IPV6) struct ipv6hdr *ip6; -#endif unsigned int ndesc; struct tcphdr *tcp; int len16, pktlen; @@ -1043,17 +1041,15 @@ chcr_ktls_write_tcp_options(struct chcr_ktls_info *tx_info, struct sk_buff *skb, cpl->len = htons(pktlen); memcpy(buf, skb->data, pktlen); - if (tx_info->ip_family == AF_INET) { + if (!IS_ENABLED(CONFIG_IPV6) || tx_info->ip_family == AF_INET) { /* we need to correct ip header len */ ip = (struct iphdr *)(buf + maclen); ip->tot_len = htons(pktlen - maclen); cntrl1 = TXPKT_CSUM_TYPE_V(TX_CSUM_TCPIP); -#if IS_ENABLED(CONFIG_IPV6) } else { ip6 = (struct ipv6hdr *)(buf + maclen); ip6->payload_len = htons(pktlen - maclen - iplen); cntrl1 = TXPKT_CSUM_TYPE_V(TX_CSUM_TCPIP6); -#endif } cntrl1 |= T6_TXPKT_ETHHDR_LEN_V(maclen - ETH_HLEN) |