Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1699745

[PATCH] infiniband: avoid overflow warning

From Arnd Bergmann <arnd@arndb.de>
Newsgroups linux.kernel
Subject [PATCH] infiniband: avoid overflow warning
Date 2017-07-31 09:00 +0200
Message-ID <u9cQi-2Wn-9@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


A sockaddr_in structure on the stack getting passed into rdma_ip2gid
triggers this warning, since we memcpy into a larger sockaddr_in6
structure:

In function 'memcpy',
    inlined from 'rdma_ip2gid' at include/rdma/ib_addr.h:175:3,
    inlined from 'addr_event.isra.4.constprop' at drivers/infiniband/core/roce_gid_mgmt.c:693:2,
    inlined from 'inetaddr_event' at drivers/infiniband/core/roce_gid_mgmt.c:716:9:
include/linux/string.h:305:4: error: call to '__read_overflow2' declared with attribute error: detected read beyond size of object passed as 2nd parameter

The warning seems appropriate here, but the code is also clearly
correct, so we really just want to shut up this instance of the
output.

The best way I found so far is to avoid the memcpy() call and instead
replace it with a struct assignment.

Fixes: 6974f0c4555e ("include/linux/string.h: add the option of fortified string.h functions")
Cc: Daniel Micay <danielmicay@gmail.com>
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/rdma/ib_addr.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/rdma/ib_addr.h b/include/rdma/ib_addr.h
index 7aca12188ef3..ec5008cf5d51 100644
--- a/include/rdma/ib_addr.h
+++ b/include/rdma/ib_addr.h
@@ -172,7 +172,8 @@ static inline int rdma_ip2gid(struct sockaddr *addr, union ib_gid *gid)
 				       (struct in6_addr *)gid);
 		break;
 	case AF_INET6:
-		memcpy(gid->raw, &((struct sockaddr_in6 *)addr)->sin6_addr, 16);
+		*(struct in6_addr *)&gid->raw =
+			((struct sockaddr_in6 *)addr)->sin6_addr;
 		break;
 	default:
 		return -EINVAL;
-- 
2.9.0

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 09:00 +0200
  Re: [PATCH] infiniband: avoid overflow warning Moni Shoua <monis@mellanox.com> - 2017-07-31 09:10 +0200
    Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 09:40 +0200
      Re: [PATCH] infiniband: avoid overflow warning Bart Van Assche <Bart.VanAssche@wdc.com> - 2017-07-31 17:40 +0200
        Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 18:10 +0200
          Re: [PATCH] infiniband: avoid overflow warning Bart Van Assche <Bart.VanAssche@wdc.com> - 2017-07-31 18:20 +0200
            Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 21:20 +0200
              Re: [PATCH] infiniband: avoid overflow warning Daniel Micay <danielmicay@gmail.com> - 2017-07-31 21:40 +0200
      Re: [PATCH] infiniband: avoid overflow warning Kees Cook <keescook@chromium.org> - 2017-07-31 23:00 +0200
        Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 23:20 +0200
          Re: [PATCH] infiniband: avoid overflow warning Kees Cook <keescook@chromium.org> - 2017-07-31 23:20 +0200
            Re: [PATCH] infiniband: avoid overflow warning Daniel Micay <danielmicay@gmail.com> - 2017-07-31 23:40 +0200
            Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-08-01 00:00 +0200
              Re: [PATCH] infiniband: avoid overflow warning Kees Cook <keescook@chromium.org> - 2017-08-01 00:10 +0200

csiph-web