All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] infiniband: avoid overflow warning
@ 2017-07-31  6:50 ` Arnd Bergmann
  0 siblings, 0 replies; 28+ messages in thread
From: Arnd Bergmann @ 2017-07-31  6:50 UTC (permalink / raw)
  To: Doug Ledford, Sean Hefty, Hal Rosenstock
  Cc: Arnd Bergmann, Daniel Micay, Kees Cook, Moni Shoua, Kalderon,
	Michal, Ariel Elior, David S. Miller, Bart Van Assche,
	Parav Pandit, Noa Osherovich, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Kees Cook <keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Signed-off-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2017-08-18 16:40 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-31  6:50 [PATCH] infiniband: avoid overflow warning Arnd Bergmann
2017-07-31  6:50 ` Arnd Bergmann
     [not found] ` <20170731065016.2947796-1-arnd-r2nGTMty4D4@public.gmane.org>
2017-07-31  7:08   ` Moni Shoua
2017-07-31  7:08     ` Moni Shoua
     [not found]     ` <CAG9sBKNaFTAuf2gL9QLOCwvH-xAq7SXfaMZxNMFo7d=6cH3TkQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31  7:30       ` Arnd Bergmann
2017-07-31  7:30         ` Arnd Bergmann
     [not found]         ` <CAK8P3a2AP7WSF2HUe_4nxsNFqCit_djKdd3_5ab6P1YgP7bvJQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31 15:32           ` Bart Van Assche
2017-07-31 15:32             ` Bart Van Assche
     [not found]             ` <1501515117.2466.9.camel-Sjgp3cTcYWE@public.gmane.org>
2017-07-31 16:04               ` Arnd Bergmann
2017-07-31 16:04                 ` Arnd Bergmann
     [not found]                 ` <CAK8P3a1r22C-Uxs93OSbS4_eRNhKUTv8xwc6wwGahE80whCjyA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31 16:17                   ` Bart Van Assche
2017-07-31 16:17                     ` Bart Van Assche
     [not found]                     ` <1501517853.2466.12.camel-Sjgp3cTcYWE@public.gmane.org>
2017-07-31 19:19                       ` Arnd Bergmann
2017-07-31 19:19                         ` Arnd Bergmann
2017-07-31 19:35                         ` Daniel Micay
2017-07-31 20:58         ` Kees Cook
     [not found]           ` <CAGXu5jJ66RY05M=sYZeAMVPEtpneOKyBN2CSNsrewj4EREeu+g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31 21:10             ` Arnd Bergmann
2017-07-31 21:10               ` Arnd Bergmann
     [not found]               ` <CAK8P3a045_-89OQk+qG7odJ2NeeObq6QaKXccsaC_jOJxfYbfQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31 21:18                 ` Kees Cook
2017-07-31 21:18                   ` Kees Cook
     [not found]                   ` <CAGXu5j+EPe7csgFt5SnDoobQWkOGH5qaoSZ=QMHHoGFFsMV45Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31 21:37                     ` Daniel Micay
2017-07-31 21:37                       ` Daniel Micay
2017-07-31 21:52                     ` Arnd Bergmann
2017-07-31 21:52                       ` Arnd Bergmann
     [not found]                       ` <CAK8P3a3q9d1_WU9hknhy5wH8_f26S3EUr=U1fu5=YL+3TmhBEw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31 22:06                         ` Kees Cook
2017-07-31 22:06                           ` Kees Cook
2017-08-18 16:40   ` Doug Ledford
2017-08-18 16:40     ` Doug Ledford

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.