infiniband: avoid overflow warning
authorArnd Bergmann <arnd@arndb.de>
Mon, 31 Jul 2017 06:50:05 +0000 (08:50 +0200)
committerDoug Ledford <dledford@redhat.com>
Fri, 18 Aug 2017 18:01:11 +0000 (14:01 -0400)
commit5f8a4db715ca21c3195b5eea24e26574c0f5acfa
treebb3c4b2ec32179fb25ebf153cdff6003e9bc5796
parent5a5a3d0cfe6b3c99585d7763cd966ec1654bc4e3
infiniband: avoid overflow warning

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>
Signed-off-by: Doug Ledford <dledford@redhat.com>
include/rdma/ib_addr.h