Ilya Maximets
4c6d43db2a
net: dst_metadata: fix false-positive memcpy overflow in tun_dst_unclone
...
kmalloc_flex() in metadata_dst_alloc() sets __counted_by for the
structure to the options_len, which is then initialized to zero.
Later, we're initializing the structure by copying the tunnel info
together with the options, and this triggers a warning for a potential
memcpy overflow, since the compiler estimates that the options can't
fit into the structure, even though the memory for them is actually
allocated.
memcpy: detected buffer overflow: 104 byte write of buffer size 96
WARNING: CPU: X PID: Y at lib/string_helpers.c:1036 __fortify_report
skb_tunnel_info_unclone+0x179/0x190
geneve_xmit+0x7fe/0xe00
The issue is triggered when built with clang and source fortification.
Fix that by doing the copy in two stages: first - the main data with
the options_len, then the options. This way the correct length should
be known at the time of the copy.
It would be better if the options_len never changed after allocation,
but the allocation code is a little separate from the initialization
and it would be awkward and potentially dangerous to return a struct
with options_len set to a non-zero value from the metadata_dst_alloc().
Another option would be to use ip_tunnel_info_opts_set(), but it is
doing too many unnecessary operations for the use case here.
Fixes: 69050f8d6d ("treewide: Replace kmalloc with kmalloc_obj for non-scalar types")
Reported-by: Johan Thomsen <write@ownrisk.dk >
Closes: https://lore.kernel.org/netdev/CAKv6aAM8_EWgXScnKmKYm_4SwGDVBK++dzfP+Y6msUXbp99QUw@mail.gmail.com/
Signed-off-by: Ilya Maximets <i.maximets@ovn.org >
Link: https://patch.msgid.link/20260616100332.1308294-1-i.maximets@ovn.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
2026-06-21 14:33:05 -07:00
..
2026-04-16 02:57:01 +00:00
2026-06-11 14:24:41 -04:00
2026-02-21 01:02:28 -08:00
2026-03-05 08:02:05 -08:00
2026-06-09 17:56:21 -07:00
2026-06-15 14:09:57 -07:00
2026-06-08 17:06:24 -07:00
2026-01-28 19:32:26 -08:00
2026-05-28 18:10:03 -07:00
2024-10-24 16:03:40 +02:00
2026-01-12 19:29:11 -08:00
2026-06-12 18:31:32 -07:00
2026-06-17 16:41:34 -07:00
2026-06-04 08:29:02 -07:00
2026-06-04 15:29:04 -07:00
2026-05-27 17:27:26 -07:00
2025-04-24 17:03:45 -07:00
2025-07-08 18:05:25 -07:00
2026-06-13 10:38:27 -07:00
2025-07-02 14:22:02 -07:00
2026-05-05 17:47:05 -07:00
2026-04-23 10:24:02 -07:00
2026-04-29 18:32:02 -07:00
2024-08-26 09:37:22 -07:00
2026-06-10 07:53:26 -07:00
2026-06-10 07:53:26 -07:00
2025-02-27 14:03:14 +01:00
2024-10-02 17:23:23 -04:00
2026-02-05 11:58:39 +01:00
2026-06-05 10:00:04 +02:00
2024-03-06 21:01:26 +01:00
2025-05-30 19:53:51 -07:00
2024-10-02 17:23:23 -04:00
2025-09-14 11:55:04 -07:00
2026-04-08 19:18:52 -07:00
2023-07-27 17:17:32 -07:00
2026-06-13 16:16:58 -07:00
2026-04-30 17:21:45 -07:00
2026-02-28 15:31:35 -08:00
2026-02-28 15:31:34 -08:00
2023-10-24 13:08:14 -07:00
2026-05-21 13:04:42 +02:00
2024-05-08 10:35:09 +01:00
2024-08-26 09:37:23 -07:00
2026-06-21 14:33:05 -07:00
2024-05-29 17:34:49 -07:00
2026-02-02 17:49:29 -08:00
2024-11-13 18:49:50 -08:00
2024-08-26 09:37:23 -07:00
2024-04-01 21:27:08 -07:00
2024-10-11 15:35:05 -07:00
2026-06-11 15:14:03 -07:00
2024-07-15 09:14:39 -07:00
2026-02-10 15:30:11 +01:00
2025-08-26 17:34:31 -07:00
2026-02-21 17:09:51 -08:00
2023-08-08 15:58:23 -07:00
2026-05-11 18:28:08 -07:00
2026-05-08 15:43:29 -07:00
2024-04-01 10:49:28 +01:00
2026-01-21 19:28:32 -08:00
2024-05-07 01:35:55 +02:00
2023-07-28 14:07:59 -07:00
2026-03-04 16:54:09 -08:00
2024-08-26 09:37:23 -07:00
2025-09-11 12:22:38 +02:00
2024-05-08 10:35:09 +01:00
2025-10-30 08:38:51 +01:00
2023-11-20 11:43:03 +01:00
2024-02-26 18:40:34 -08:00
2026-02-24 17:47:27 -08:00
2026-03-05 18:50:05 -08:00
2026-03-02 18:17:17 -08:00
2026-02-26 10:23:00 -08:00
2025-08-26 17:34:31 -07:00
2026-02-03 15:13:24 +01:00
2025-12-10 01:15:27 -08:00
2026-03-26 12:09:57 -07:00
2026-02-02 17:49:30 -08:00
2025-09-23 10:12:15 +02:00
2024-12-17 19:37:00 -08:00
2026-02-13 12:24:05 -08:00
2026-02-24 16:30:40 -08:00
2026-03-29 11:21:24 -07:00
2026-03-29 11:21:23 -07:00
2026-03-14 08:38:06 -07:00
2026-06-16 14:59:58 -07:00
2026-04-03 15:52:10 -07:00
2026-06-05 13:11:54 +02:00
2026-03-29 11:21:22 -07:00
2025-03-21 17:36:49 +08:00
2025-12-10 01:15:27 -08:00
2026-06-15 15:57:31 -07:00
2024-10-09 08:53:01 +02:00
2025-08-13 18:18:33 -07:00
2026-02-02 17:09:11 -08:00
2024-12-06 17:43:08 -08:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:27:14 -07:00
2026-05-26 17:26:57 -07:00
2025-07-02 14:32:30 -07:00
2026-06-05 16:12:26 +02:00
2024-10-02 17:23:23 -04:00
2026-05-13 19:03:05 -07:00
2026-04-20 11:46:57 -07:00
2024-11-09 09:04:54 -08:00
2026-05-04 19:09:41 -07:00
2026-06-11 15:33:37 -07:00
2026-06-09 17:18:51 -07:00
2026-03-29 11:21:24 -07:00
2024-11-09 13:22:57 -08:00
2026-05-16 13:22:50 +02:00
2024-11-30 13:41:50 -08:00
2026-04-09 14:36:52 +02:00
2026-05-20 16:34:20 -07:00
2026-06-09 10:13:04 -07:00
2025-03-12 13:32:35 -07:00
2026-04-09 18:21:46 -07:00
2026-04-09 18:26:28 -07:00
2023-11-20 10:15:16 -08:00
2024-11-21 08:28:08 -08:00
2026-05-14 16:49:26 -07:00
2026-05-21 19:06:13 -07:00
2025-04-24 09:29:56 +02:00
2025-10-20 17:13:40 -07:00
2026-05-08 15:32:59 -07:00
2025-06-13 18:17:08 -07:00
2026-04-22 21:12:47 -07:00
2026-03-02 18:17:17 -08:00
2026-05-22 17:23:37 -07:00
2026-02-05 09:32:45 -08:00
2025-10-16 12:04:47 -07:00
2024-03-07 21:12:43 -08:00
2024-07-11 18:11:31 -07:00
2025-09-18 12:32:06 +02:00
2025-09-14 11:35:17 -07:00
2024-08-26 09:37:23 -07:00
2024-08-26 09:37:23 -07:00
2026-02-05 09:23:06 -08:00
2026-04-23 10:24:02 -07:00
2025-08-29 19:36:32 -07:00
2026-03-04 16:54:09 -08:00
2026-03-04 16:54:10 -08:00
2025-04-11 18:58:10 -07:00
2026-06-17 16:01:52 -07:00
2026-06-09 12:08:31 +02:00
2026-01-13 11:54:29 +01:00
2025-07-04 09:32:35 +02:00
2026-03-04 17:44:35 -08:00
2025-08-26 18:11:29 -07:00
2024-06-24 16:41:23 -07:00
2024-05-30 18:29:38 -07:00
2025-11-06 13:38:11 +01:00
2026-05-20 17:13:18 -07:00
2025-09-08 18:06:21 -07:00
2024-08-02 17:16:59 -07:00
2026-06-15 15:57:31 -07:00
2025-05-05 16:48:12 -07:00
2026-03-19 13:14:00 +01:00
2026-03-09 19:31:41 -07:00
2026-04-30 09:38:56 +02:00
2026-04-18 11:10:12 -07:00
2023-12-04 14:45:26 -08:00
2026-06-16 14:59:58 -07:00
2025-07-11 11:00:57 -07:00
2025-08-25 17:53:35 -07:00
2023-07-28 14:07:59 -07:00
2026-06-12 16:43:10 -07:00
2026-03-13 18:57:44 -07:00
2026-04-12 10:54:31 -07:00
2026-05-05 17:47:04 -07:00
2026-03-13 18:57:46 -07:00
2025-11-04 19:10:32 -08:00
2026-05-05 17:47:05 -07:00
2025-07-14 17:19:13 -07:00
2026-04-06 18:43:51 -07:00
2026-04-06 18:43:51 -07:00
2025-09-24 10:22:37 -07:00
2026-06-13 13:16:39 -07:00
2026-03-16 19:28:21 -07:00