net: ipv4: Avoid bounds check warning
authorhuhai <huhai@kylinos.cn>
Thu, 26 May 2022 10:12:13 +0000 (18:12 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 31 May 2022 04:21:12 +0000 (21:21 -0700)
Fix the following build warning when CONFIG_IPV6 is not set:

In function ‘fortify_memcpy_chk’,
    inlined from ‘tcp_md5_do_add’ at net/ipv4/tcp_ipv4.c:1210:2:
./include/linux/fortify-string.h:328:4: error: call to ‘__write_overflow_field’ declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
  328 |    __write_overflow_field(p_size_field, size);
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: huhai <huhai@kylinos.cn>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20220526101213.2392980-1-zhanggenjian@kylinos.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp_ipv4.c

index dac2650..fe8f23b 100644 (file)
@@ -1207,8 +1207,8 @@ int tcp_md5_do_add(struct sock *sk, const union tcp_md5_addr *addr,
        key->l3index = l3index;
        key->flags = flags;
        memcpy(&key->addr, addr,
-              (family == AF_INET6) ? sizeof(struct in6_addr) :
-                                     sizeof(struct in_addr));
+              (IS_ENABLED(CONFIG_IPV6) && family == AF_INET6) ? sizeof(struct in6_addr) :
+                                                                sizeof(struct in_addr));
        hlist_add_head_rcu(&key->node, &md5sig->head);
        return 0;
 }