From nobody Tue Aug 1 18:29:45 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RFkDD23ZHz4phtv; Tue, 1 Aug 2023 18:29:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RFkDC2dcvz4W8T; Tue, 1 Aug 2023 18:29:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1690914587; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Wg46FWUTam+BYKi3cEo/XzRiSKrJMOwkbJ8c7o2+goM=; b=EwWBETa0EyjOqKyiEu9mOFEjYvjIlQTUYrEEk61WIv9U1Lins59IRzXyuYLngvmTGfjgUl U45Qx4741on1TCGct3quYX/wxiW2lajbVcVy0rzlZAy2mLl3/lxROB9atkLSW8UNj7nzEL iV1pjQX/+vxr7pU7utXBOdGuYGY2FF8qVLzh5St8VG1g0yNjTj0srlyhfhMttvWbSHw22x Ud08dw2stOzwchpzzzC3sDXtriDc2TdnJqZ++oX9Ty+RwJqEc9heq78UOKjSFXDA7CuV7g D3ZUN58g9vnpGD/sH7pXKit2dvs9ZqqRoLWmWvIfzTkGCh3R4JuiJCx6BFwjgw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1690914587; a=rsa-sha256; cv=none; b=NsqcmNdbPmOu9KEHZe3C8CRPiFXSWur4BXOCetvPCoeHqLhasQbzzpvy5wDmKDoBcjmXk7 V4Fo3ZTakK6xMjV2T2N8/+vuUbmYjPsIjy01+6kcPpwZLNXeAh2R/eEKa0ZhXj926XIhEP twxq5htYn+Otk0io3EY67NvPaPwQ8S28WjrkHlHkAmq5eCdteFKEnM/nLH/Qroa0G6afhU gIOD2U73fUolq71nyhz9ZW/6l9dr35GyELnQO4l+9LbzzAXIzBpezAj88ro7o/nu28Sfv/ 19LzAaMKcboBhdZyUeszW6Lm2Da8y0oDSD4Yw4RaCMKmvO3Q8TVR2VPV4WVbLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1690914587; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Wg46FWUTam+BYKi3cEo/XzRiSKrJMOwkbJ8c7o2+goM=; b=dbaPslf9M3d3+m7w6pNGMSVUk2GwqqN4DoeazjW0P4WwA5g6ejEJvOs+wOssBBQGAEdwbb TndSDsbW5415rJcRE9jgi3D6018mbHzcKNBAQ13cbwZy5uy4Re+muHppYw2va4o8rEtlfb 4t8qINa47a8APXFaPXvuGwINo6nunxVgNSOKWZOJpNwiZ4AxQO+B2PogziW4bIJgyOtjW7 H4LNyAto+REr4zRnU378FT1J350rVy7nIv7XVnHGWl8VgDA+t0kgi0p6DhwSkfmamW16JX vsGnMYBFPzZtJTvoRB/0kn+TsQN94e8OVViyaZmsYN/2Ed3s5lNsJF1WE+tjsg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4RFkDB51PCznpb; Tue, 1 Aug 2023 18:29:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 371ITjfe046644; Tue, 1 Aug 2023 18:29:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 371ITjfJ046643; Tue, 1 Aug 2023 18:29:45 GMT (envelope-from git) Date: Tue, 1 Aug 2023 18:29:45 GMT Message-Id: <202308011829.371ITjfJ046643@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: bc50720b3216 - stable/13 - tcp_lro: Fix for undefined behaviour. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: bc50720b321667c71d77d3f0c692a59c77f955da Auto-Submitted: auto-generated The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=bc50720b321667c71d77d3f0c692a59c77f955da commit bc50720b321667c71d77d3f0c692a59c77f955da Author: Hans Petter Selasky AuthorDate: 2022-11-28 22:56:16 +0000 Commit: Ed Maste CommitDate: 2023-08-01 17:13:06 +0000 tcp_lro: Fix for undefined behaviour. Make sure the size of the raw[] array in the lro_address union is correctly set at compile time, so that static code analysis tools do not report undefined behaviour. PR: 265664 Sponsored by: NVIDIA Networking (cherry picked from commit e0d8add4af0be1d37ede9a16f46424dc08f0d95e) --- sys/netinet/tcp_lro.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sys/netinet/tcp_lro.h b/sys/netinet/tcp_lro.h index 2b0555027266..f3099d16bc1a 100644 --- a/sys/netinet/tcp_lro.h +++ b/sys/netinet/tcp_lro.h @@ -34,6 +34,8 @@ #define _TCP_LRO_H_ #include +#include + #include #ifndef TCP_LRO_ENTRIES @@ -65,8 +67,12 @@ struct inpcb; +/* Precompute the LRO_RAW_ADDRESS_MAX value: */ +#define LRO_RAW_ADDRESS_MAX \ + howmany(12 + 2 * sizeof(struct in6_addr), sizeof(u_long)) + union lro_address { - u_long raw[1]; + u_long raw[LRO_RAW_ADDRESS_MAX]; struct { uint8_t lro_type; /* internal */ #define LRO_TYPE_NONE 0 @@ -89,10 +95,10 @@ union lro_address { struct in6_addr v6; } d_addr; /* destination IPv4/IPv6 address */ }; -} __aligned(sizeof(u_long)); +}; -#define LRO_RAW_ADDRESS_MAX \ - (sizeof(union lro_address) / sizeof(u_long)) +_Static_assert(sizeof(union lro_address) == sizeof(u_long) * LRO_RAW_ADDRESS_MAX, + "The raw field in the lro_address union does not cover the whole structure."); /* Optimize address comparison by comparing one unsigned long at a time: */