From patchwork Fri Apr 20 16:57:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 10353259 X-Patchwork-Delegate: leon@leon.nu Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C1197600CC for ; Fri, 20 Apr 2018 16:57:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 537FB27F4B for ; Fri, 20 Apr 2018 16:57:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4357B280CF; Fri, 20 Apr 2018 16:57:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 131F027F4B for ; Fri, 20 Apr 2018 16:57:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752325AbeDTQ5k (ORCPT ); Fri, 20 Apr 2018 12:57:40 -0400 Received: from mail-ve1eur01on0083.outbound.protection.outlook.com ([104.47.1.83]:46883 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750841AbeDTQ5j (ORCPT ); Fri, 20 Apr 2018 12:57:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=yLXe8kjA8oPrBrYnDQ/mVqglXU5ckth8mIS46sKOssQ=; b=s2Nw70MClyMrRXoWlkgxHDK7ThLrSCqBQ4e/QCMo+zcpcZXID9FATNPVCuTIIqpwVymFb76+o6SY17I+iYHJsbVjwdofrSah5RlGkd0NjNarQmq0+p7EK4Hl/46eMZ09GdQOg9QRqhDNGR6PPnZ1Sr0Mm799nRc8WinIAxVEq4s= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=mellanox.com; Received: from mlx.ziepe.ca (174.3.196.123) by DB7PR05MB4459.eurprd05.prod.outlook.com (2603:10a6:5:1b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.14; Fri, 20 Apr 2018 16:57:37 +0000 Received: from jgg by mlx.ziepe.ca with local (Exim 4.86_2) (envelope-from ) id 1f9ZLf-0006ob-O7; Fri, 20 Apr 2018 10:57:23 -0600 Date: Fri, 20 Apr 2018 10:57:23 -0600 From: Jason Gunthorpe To: linux-rdma@vger.kernel.org Cc: Steve Wise Subject: [PATCH rdma-core] Check for broken strict aliasing Message-ID: <20180420165723.GA26172@ziepe.ca> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [174.3.196.123] X-ClientProxiedBy: MWHPR03CA0056.namprd03.prod.outlook.com (2603:10b6:301:3b::45) To DB7PR05MB4459.eurprd05.prod.outlook.com (2603:10a6:5:1b::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(7193020); SRVR:DB7PR05MB4459; X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4459; 3:Cz8FXx1vA2yQY+lrMl9v0//1mbPk2G1BlR/nmOYAa6fJK7k7D2Ozp5Zov3LSDAFsJeGrNNjiOBGDctZfbFd3ciZ1AQHrh4Jb0/mUbhB1Sb7tvluGIgxEMXwyRe4ZjkOGRhDb1X9cX508x3idEnh3hNAF6NCMlOWmXSkgIqe5ewo8DYigpRS5sBQMJLQQbfESDB8MF8On3znxrpCNsZLPq5wbAFO9kUhoZkryGBfXvQGjhoKUJUQ257XWe8gGoScR; 25:Ij1vq7GVtfrnzfZZHQb2ozBuGZtgGIJDaZpyGWpqnHXWwdvyoc93oycpNi5vtrBP8VHm1IplxVTwVT/jt8L7aLBTT5Zikkt5Y1EUnEwSDoiXzUlzWx8W6njI3frQv0pBfkcPwYqEl/USWh1mOp7hJzv3qKDjLceR8EAdNVXNtKL7TiXQcqfFQ4QuwPUFNfmo4R/sdn5YaK/SkE78COg+NIXSvry+aO+FZ/8vP3FBgWWhd0Aq7min6McrWNeSt0KlkX8JOX+bOnAdRaj1AHo9AtM82X3q8NfQclFByfUMT3YY2vA/HA2SKzw7KYg+htlwdF5dUpJ5mqNciQEomh+WcQ==; 31:ggVopviq8ysi7uVLmYNzmJHxX37lT/xZFVazD0Ex+coBDhBcyc4RA5xW6pXyNTQn43xKMICihdrtSt5ka9Q+NWxBrVUet8+9nZ6eHRDS+RcbL4jaNN+y0jvcD0sZPThcn0G1lVjdXs1eJ+XQoTZhnkpJHqFzhRRpcNVEDWRI7mExyqYWvOIvVk69bRWO6GKZKfnJWzKR/05k1WJX19Y0gLntJYuU1UVGhfLUFTAGzY4= X-MS-TrafficTypeDiagnostic: DB7PR05MB4459: X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4459; 20:4/03otdwIZMevgr1p9KtIGnZ+yN1gBx35g7NMA9/BJkydTrHA+sPGZL2FgVqDGrPjqh7EB7cQaHB7qBVklJPeDHHnB4LhhNAHpbUWLmEAvCxFgnSOa+rRraSoy7lvJdjkr3xygjAqJASHkIwVplM7MTLEewtIrjY4mvNxUHTUOXc9cX6t5y52tx17V4y7o7hQ8P9axxhq4w3qTl5Me21WF54ooyIOGEJjjqCCqLY1lChXWP9ju6BGZ16gaKHpIuOvdSZICNXTBu/a7ccf/K+0S5l5wEChSyOqahGgC/c1Dhwj0qErES2UjM0htgB8GOoVsNGTjo9bBGhErf1r+ba5fdRxIgKFml66JeKBubJkbj3h66XtneSPHaTLZfjbjc/pywE9TCrSP2YxwBUz3Q6lmZrgs7xWoVlnKB1GSmfLQkwaYQoynRosF+hIn6f7Exp3NyyOdfdFd89/bzY+m1Hk1p8+UiTrLXcX1G8RpWBPyn/Z/RoJcLB7KsseWwKrXcU; 4:Vw4SLE+TKPdgDub5hin8SWeuXqdP5XQEgJc3OPg7J2xe2cLO07SwFRpQ8PKGTOgAgVRIduLCbsMzjv9C6x8iXfzColkFr3HMKakl+3GOJGkB8vQTG51P2NaB+8b55DM/fsAY02mZG5S7XAaHz8DIsUCzC4pvdm09ajdvCAEXyIVb0LKcLDt5Vhki2R9B+2GkENo51Qmz+HHj3Ni+xxYELXR7CSyWF3rKNM6Df94Hi3PR0oJm5MnkPwmU81y1hi5ErWpiUnnviF4eUriDvnYSrA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231232)(944501327)(52105095)(3002001)(10201501046)(6055026)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DB7PR05MB4459; BCL:0; PCL:0; RULEID:; SRVR:DB7PR05MB4459; X-Forefront-PRVS: 0648FCFFA8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(346002)(396003)(39380400002)(39860400002)(376002)(8936002)(386003)(33896004)(316002)(50466002)(16586007)(2906002)(59450400001)(186003)(52116002)(53936002)(6916009)(26005)(23726003)(1076002)(6116002)(9686003)(3846002)(476003)(575784001)(8676002)(9746002)(36756003)(2361001)(66066001)(57986006)(83796002)(86362001)(9786002)(33656002)(81166006)(2351001)(478600001)(4326008)(47776003)(7736002)(305945005)(46656002)(5660300001)(18370500001)(24400500001)(42262002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR05MB4459; H:mlx.ziepe.ca; FPR:; SPF:None; LANG:en; MLV:sfv; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR05MB4459; 23:ppxrMi1UbafgK0CeyXd/DII++Ky7jkAGfBvhANCLB?= =?us-ascii?Q?y1fcCZSvlIl+BNTYBqjrgnh6mNPvnMeqbOV+VZuJOegMpw/S44102gfSbuLs?= =?us-ascii?Q?E/GDqPMdRlLEu4AALcdxbOhCTt4Hq2GwSyfnMqj97V6Lz548O0dATIXGFq87?= =?us-ascii?Q?HDQxlisuMIVLn80KEdPxioJBq3IpJMprejwtoDBKbTPwEOQHwe+i4owRWas+?= =?us-ascii?Q?I1BmbrST8Xk0TygwNiprSpMAi+QPFtoThG+EAUlkxL25r3ak94J1rV6RBSmM?= =?us-ascii?Q?MkdSU3GDfVZkl//TNFQFJAsdFvnaTAQRlRZeyMms2y11a08bq3iKVSG6Wgwt?= =?us-ascii?Q?DC2JH2f2HV8gO7UUFQbrcAKQgnZlpg05HOrKDSS2Ip41Yh9dcWqFnJotU72/?= =?us-ascii?Q?Ia4Cln5qUWaFSXtLc9P3tftr7jqA2t1eaBTFvW8CRV7iGkgOZvk3wd6SUK+e?= =?us-ascii?Q?ycbcM1lNJgyiUrBI5BLPEFAZLQop+uGlOGKihr3og5i7YOdHv+wnkrWqkDoK?= =?us-ascii?Q?FTmmaWYSIsizN1rAaf/pD1nehFeDJ73F4A96K/EahmJtz7nEe9431JdI+62g?= =?us-ascii?Q?59V2I189YIlTfvfKf29rCB9Q7ZqWpFAfjGQrq9pBMzWKLaWlc8Vu0Ei6h/hM?= =?us-ascii?Q?tUSZmX5E+xDDtaFcI3LfKgc0NlTwZWx1ss26J9DLsx2+xlD/nT2mVV0DPXsj?= =?us-ascii?Q?B6ihXz8WsjodXpnPK/ASN2p1jOumWsownIsE1clEWO1zEA3DftXIgwbCGdOc?= =?us-ascii?Q?At24npHgJmbx/5Ose9JVg7BcT72nacnXEIdEozdscv+BIVjhUTaCqZG3RL4Q?= =?us-ascii?Q?RuXtP4bhWbD53+qmlFw0VhQeKsSeVsdTq2aS5ANaI1xlWtsl13rwqMIFejWb?= =?us-ascii?Q?sson+hXDi2haETSc3shHmTRBTG7SNY4nZlNLO77rGe8bz5u31XtUPUAYm0J6?= =?us-ascii?Q?CeJuXoRk+UTcEyES5/mZPrkvVs8lj5j6+ZKKAM3Hwo4jB3afObc9s0iz/wpT?= =?us-ascii?Q?p58yxpeBudpWhtSllaOij/V1iHouoLqzF0eBu2ZdWwYYFwTc/3dvsZdMUyG0?= =?us-ascii?Q?sdt6Qo5qilMdpivAOJPHRQN0dSdVwlO2WE6n4AZh2ouGuCWA2pqhMUhwpKJ7?= =?us-ascii?Q?trubimecc4=3D?= X-Microsoft-Antispam-Message-Info: TlsRVwDZzv0wGXcRYQ0rQek4bJCSgQhRwLpwQ6I80O2TTj7u6BbzDSmjikti2JVq2iU7hcu0CKtmMKzo4Qo5bN/JBzPfiwsYzDAlMJVr9Q2DctbaDa6ZQb6brWbOuBfPhxNJOoaTi1Zs2w2/l0J4jNacuOSfmfSc21s74JJ3hRJdT8OSoGZHjqQh7JDTpnAL X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4459; 6:w4zNVZp+HVu8drhw2Me2FnfKJt3FqS6gezQ1kNVyp10wWsghVgrwEhhq1tePX0uQhOgYAUcuVBDeuR0X3AmLcErCI/s8hrv+vpD2KBPFrmaajNT2llbXugs8XOouDY8Pr8VBNknYXeDrdqdSox+NQyE9PzYy3LnD9CQRzVkzlEANSXuxOd8pir4xcUl2KZtd11vFJXw+MKpCFMM3ULk+ihY2EQ8p3DKf9ci7Bd9p0N0ehT1xoQuuAGz4F5SO432Auo6oFkpyHFk9aFniWXE//bYDv7tM32eNY51tlQCWVwezJD7ARHaUvxRBgLAXkrqPSqXUD7QyJR30Qr+wb3BwS13yFq3sIS7siBCBiqRjPW9LhsVOt3VlxuSmHUcQgYOkBMPulDWDaNbc+W1eXkaIsL8l9duJcscOeLzPJexsiPPa52ZxS++iJ2Qp48L3eJOt3uIHXe3FZ0nj/TPKtdnXxQ==; 5:X8XnfAlg0dcfN9hZj9Lf5lgWsBEbzzPOVKNU6NdBNJ2jx3oSW804Gwkk33hOIvNXyYdih0sNAX18yZE9c83ksa2bZ9vJRlEheZnzivr9Mn0OTRivt/LvxgmR0IHqS2bO5rriBa/CU763C6W9mxAzCPp3vs9gY4CH5RTrUzqOv0I=; 24:1dOzTukc/ycyycm+D2ZgCAnnxQrWNFBFzUYCPSKLuPvTh0CAwInOyZqsGeAJllLPpRvzVRZ36hNpdPDD53lK1vSWEMi5sj547y+DosdLJQU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4459; 7:xrjJGSVB2TQxUnxsc8gzP4/GSv+nYQmT+9vQpru5nIo5Os3WqoCnL4w2ygosGLoORN2dyvKcozLjYbVbXyaEoqx2LVZaYMzqVClEo3njlpqYRAmqaJ4cQMEoOazL131lFJ6fxDkNzwsnX0+zbnsAEqLVEh2IzLpydBebib6b263HWVfIeeyznztT9amMGXKEEDsFnI8aQbfsc1RHiKQyYPBX5HWJTOb6Q71XUEo7OGkgAwniO7GJoCg2E6/tNvv4 X-MS-Office365-Filtering-Correlation-Id: e514066e-ed9d-42e4-867c-08d5a6dfd20e X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2018 16:57:37.3003 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e514066e-ed9d-42e4-867c-08d5a6dfd20e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR05MB4459 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP At least the gcc 4.4 that comes with Centos6 does not support this properly and throws bogus warnings. Globally disable strict aliasing for safety on these compilers. Signed-off-by: Jason Gunthorpe --- CMakeLists.txt | 10 ++++++++++ buildlib/RDMA_EnableCStd.cmake | 28 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) Here is the patch you wanted Steve.. It works for you? diff --git a/CMakeLists.txt b/CMakeLists.txt index 859d7e85d0c274..99202a7548fbdb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -276,6 +276,13 @@ CHECK_C_SOURCE_COMPILES(" RDMA_DoFixup("${HAVE_GLIBC_UAPI_COMPAT}" "linux/in.h") RDMA_DoFixup("${HAVE_GLIBC_UAPI_COMPAT}" "linux/in6.h") +# The compiler has working -fstrict-aliasing support, old gcc's do not. If +# broken then globally disable strict aliasing. +RDMA_Check_Aliasing(HAVE_WORKING_STRICT_ALIASING) +if (NOT HAVE_WORKING_STRICT_ALIASING) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NO_STRICT_ALIASING_FLAGS}") +endif() + # Check if off_t is 64 bits, eg large file support is enabled CHECK_C_SOURCE_COMPILES(" #include @@ -557,6 +564,9 @@ endif() if (NOT HAVE_STATIC_ASSERT) message(STATUS " C11 static_assert NOT available (old compiler)") endif() +if (NOT HAVE_WORKING_STRICT_ALIASING) + message(STATUS " Compiler cannot do strict aliasing") +endif() if (NOT HAVE_VALGRIND_MEMCHECK) message(STATUS " Valgrind memcheck.h NOT enabled") endif() diff --git a/buildlib/RDMA_EnableCStd.cmake b/buildlib/RDMA_EnableCStd.cmake index c2e170929b7dde..dc448726c03cc8 100644 --- a/buildlib/RDMA_EnableCStd.cmake +++ b/buildlib/RDMA_EnableCStd.cmake @@ -57,3 +57,31 @@ function(RDMA_EnableCStd) set(CMAKE_C_STANDARD 11 PARENT_SCOPE) endif() endfunction() + +function(RDMA_Check_Aliasing TO_VAR) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") + CHECK_C_SOURCE_COMPILES(" +struct in6_addr {unsigned int u6_addr32[4];}; +struct iphdr {unsigned int daddr;}; +union ibv_gid {unsigned char raw[16];}; + +static void map_ipv4_addr_to_ipv6(struct in6_addr *ipv6) {ipv6->u6_addr32[0] = 0;} +static int set_ah_attr_by_ipv4(struct iphdr *ip4h) +{ + union ibv_gid sgid = {}; + map_ipv4_addr_to_ipv6((struct in6_addr *)&sgid); + return 0; +} + +int main(int argc, char *argv[]) +{ + struct in6_addr a; + struct iphdr h = {}; + map_ipv4_addr_to_ipv6(&a); + return set_ah_attr_by_ipv4(&h); +}" + HAVE_WORKING_STRICT_ALIASING + FAIL_REGEX "warning") + + set(${TO_VAR} "${HAVE_WORKING_STRICT_ALIASING}" PARENT_SCOPE) +endfunction()