From nobody Mon Dec 1 23:33:39 2025 Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A5B48F50F for ; Wed, 26 Nov 2025 05:47:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764136049; cv=none; b=VT+vZ2KS81CPkFubPDBlVLa8QTJYnDn/9zTEudY21t6qYfDL+SVlA4QYkWutmjLPGo5RmasIanYELXU/nBSXR4/JBQeIWRyqgl7hXqFk96Vk9RqwsEpY9PNJXrZpruTeGbf3l4maRRohhJ0EjHSoFnV1zx5RkLJFhxu2jVihcVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764136049; c=relaxed/simple; bh=SX4gdnaKbrrM/98jsYyscC7GPKCA8qiYmGpiNZ6mimU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=BnWkGRcBHImXuc+lMK5m2ar3wyfe+AjJQ8ZVRwQnoX5JTsaWAtKs5XbC9kaXQlw8BqRoi6K2GxkV475YdeJUYk9kXi+Qeimv3RwW6wqEskJrP5Fo0ZNL2Tpa0e+G5BufAj5eNy0xWYoQEzRF46fvse8hjpFWPFOZM97OmcBl/ic= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Lgz0TpeK; arc=none smtp.client-ip=209.85.214.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Lgz0TpeK" Received: by mail-pl1-f194.google.com with SMTP id d9443c01a7336-298250d7769so47523395ad.0 for ; Tue, 25 Nov 2025 21:47:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764136047; x=1764740847; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=oYN7Mj32IOmlBJhYBCg5Nac20JOashG6O7HeX4jvMpQ=; b=Lgz0TpeK9lbozgg3aF3W5/9ovOF69hKLGpl7q4XKRxBngJvz+KFMTB/PUmDoWQOEzn hGAp/ZXVJa+L2vke7NfOuNwXyaLj77u6LS9s4/HTjr8OCP8CMtFNKWXZMEOu/v8C0hRY 7f09xjYhGVUb76WLP0tVlps/bj9npjvEkQvOF5KJvCjVxLcMOSFA5QzcyKNqfS0EmqYT MNcS5566NX104p5Cu6ynHC6sim37bp+nPiVi/wBJU+KI2AA5gl0jeQ06gqmni8sBkXYQ kj5Hd+rD+PHnKkGRNaYSP1Ad9ARwnLiKKuReMIG36q6mmu2X+XbYpaNpG2cWB0HRzfej VPzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764136047; x=1764740847; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=oYN7Mj32IOmlBJhYBCg5Nac20JOashG6O7HeX4jvMpQ=; b=OOXjFo/bUmLPyHEpXrjuzc3axqTHL7CJa2aPcf+sbPXKWuLMQh7jgW1ud1P0UBcULz 8SGsLHEzzDj0GHolJkQzd9MzV3DQOxE3ODLq7Z+RNVXdgHWvicrt7sxycvxZy7hkOoXD eqrRBi9JZ26RjaELBiAZNkB9i7yA44cTT69fpLbDOupAkVH9H1FzzAWu2wPhxogqKsBJ 4CPXH2L1le/fA0zWPK9l+bAXd3HxTEdYiOm6OoyJD76Me444pnEvHD8lnKqXDThCunSX PvpH6Lu1r0U1MqaNFN+T7Q1yG24/m8fWZQKzaBhT/5/Un1tFqTpnldLpBPEN7F670EjM 3now== X-Forwarded-Encrypted: i=1; AJvYcCXBlSBvSmCc7SZdivc6Mn01zP08KHKmSNxtJtjMRILpy7WO8qINODkXt99PElpPDu/cjhcXXc/zmS/IeYM=@vger.kernel.org X-Gm-Message-State: AOJu0Yyt5yQvQDN2i+UBON7AmZAB7D6GGvJzAXs4Sbb9UHkvDCcRjaxR T1D4/H1oVbbfhLOXnSXb6WFDIJvtFtAaz1dqVpBv+/AJ8zw4Q/mO2TLF X-Gm-Gg: ASbGncu1KM3lQWOU0xZ2uOcoJ9/s3JWOBnKbMdSpBuJWCrpngzPW25qmInTpGjgYNJK 3HDi0HrVjkM3ljkJhFXWZ+9+Y1yGYOkZqN1cD2OFT4AYzCDkaoczBfNZ9S2gmcokCgnUgRHjuLQ h6iiIlLQbBZMoIg5RrogH7nwshZRz5Knnp99U9RmksvVyWWfKc6zewhVDUxYVweenEcyIvjLfm+ 4BPzpO9RSperv6Vm14fYz8u584tKJI78Zrzq59R94RMttllJLB1zx5pa10ZubXS2Vt8JoWVfE54 68IGIgzdGtu30vEB46virNSQi31J0xI5s+kykrEECt1dpKx3Hg5deBkH9RTCMzVKCveN/kknFLt mmr/t2KEZjYz5tlrcB240gi+Qpr4FOGbAEWrAj9JYYZV3X1yBkPsZ9bXoS43xZAsjgoPILINqwb 43tY3SIgMKBOjd00olwUFN5b4Plf/SMg== X-Google-Smtp-Source: AGHT+IGr1tQa7Uao2h+kQ37gSFBMOo/Ip9Hcs/Ret4+9Zty10j81F1qt78ZblE66dvLORo7hYxLb6A== X-Received: by 2002:a17:903:292:b0:298:43f4:cc4b with SMTP id d9443c01a7336-29b6c50c632mr197507855ad.26.1764136046937; Tue, 25 Nov 2025 21:47:26 -0800 (PST) Received: from fedora ([103.120.31.122]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b1077e9sm188374075ad.15.2025.11.25.21.47.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Nov 2025 21:47:26 -0800 (PST) From: Ankit Khushwaha To: Steffen Klassert , Herbert Xu , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Ankit Khushwaha Subject: [PATCH net-next] selftests/net/ipsec: Fix variable size type not at the end of struct Date: Wed, 26 Nov 2025 11:17:11 +0530 Message-ID: <20251126054711.26465-1-ankitkhushwaha.linux@gmail.com> X-Mailer: git-send-email 2.52.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The "struct alg" object contains a union of 3 xfrm structures: union { struct xfrm_algo; struct xfrm_algo_aead; struct xfrm_algo_auth; } All of them end with a flexible array member used to store key material, but the flexible array appears at *different offsets* in each struct. bcz of this, union itself is of variable-sized & Placing it above char buf[...] triggers: ipsec.c:835:5: warning: field 'u' with variable sized type 'union (unnamed union at ipsec.c:831:3)' not at the end of a struct or class is a GNU extension [-Wgnu-variable-sized-type-not-at-end] 835 | } u; | ^ one fix is to use "TRAILING_OVERLAP()" which works with one flexible array member only. But In "struct alg" flexible array member exists in all union members, but not at the same offset, so TRAILING_OVERLAP cannot be applied. so the fix is to explicitly overlay the key buffer at the correct offset for the largest union member (xfrm_algo_auth). This ensures that the flexible-array region and the fixed buffer line up. No functional change. Signed-off-by: Ankit Khushwaha Reviewed-by: Simon Horman --- tools/testing/selftests/net/ipsec.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/ipsec.c b/tools/testing/selftests/= net/ipsec.c index 0ccf484b1d9d..f4afef51b930 100644 --- a/tools/testing/selftests/net/ipsec.c +++ b/tools/testing/selftests/net/ipsec.c @@ -43,6 +43,10 @@ #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) +#ifndef offsetof +#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + #define IPV4_STR_SZ 16 /* xxx.xxx.xxx.xxx is longest + \0 */ #define MAX_PAYLOAD 2048 #define XFRM_ALGO_KEY_BUF_SIZE 512 @@ -827,13 +831,16 @@ static int xfrm_fill_key(char *name, char *buf, static int xfrm_state_pack_algo(struct nlmsghdr *nh, size_t req_sz, struct xfrm_desc *desc) { - struct { + union { union { struct xfrm_algo alg; struct xfrm_algo_aead aead; struct xfrm_algo_auth auth; } u; - char buf[XFRM_ALGO_KEY_BUF_SIZE]; + struct { + unsigned char __offset_to_FAM[offsetof(struct xfrm_algo_auth, alg_key)]; + char buf[XFRM_ALGO_KEY_BUF_SIZE]; + }; } alg =3D {}; size_t alen, elen, clen, aelen; unsigned short type; -- 2.52.0