From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Kery Qi <qikeyu2017@gmail.com>,
Simon Horman <horms@kernel.org>, Jakub Kicinski <kuba@kernel.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.18 016/122] rocker: fix memory leak in rocker_world_port_post_fini()
Date: Wed, 4 Feb 2026 15:39:58 +0100 [thread overview]
Message-ID: <20260204143852.451331169@linuxfoundation.org> (raw)
In-Reply-To: <20260204143851.857060534@linuxfoundation.org>
6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kery Qi <qikeyu2017@gmail.com>
[ Upstream commit 8d7ba71e46216b8657a82ca2ec118bc93812a4d0 ]
In rocker_world_port_pre_init(), rocker_port->wpriv is allocated with
kzalloc(wops->port_priv_size, GFP_KERNEL). However, in
rocker_world_port_post_fini(), the memory is only freed when
wops->port_post_fini callback is set:
if (!wops->port_post_fini)
return;
wops->port_post_fini(rocker_port);
kfree(rocker_port->wpriv);
Since rocker_ofdpa_ops does not implement port_post_fini callback
(it is NULL), the wpriv memory allocated for each port is never freed
when ports are removed. This leads to a memory leak of
sizeof(struct ofdpa_port) bytes per port on every device removal.
Fix this by always calling kfree(rocker_port->wpriv) regardless of
whether the port_post_fini callback exists.
Fixes: e420114eef4a ("rocker: introduce worlds infrastructure")
Signed-off-by: Kery Qi <qikeyu2017@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260123211030.2109-2-qikeyu2017@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/rocker/rocker_main.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c
index 36af94a2e062a..2794f75df8fcb 100644
--- a/drivers/net/ethernet/rocker/rocker_main.c
+++ b/drivers/net/ethernet/rocker/rocker_main.c
@@ -1524,9 +1524,8 @@ static void rocker_world_port_post_fini(struct rocker_port *rocker_port)
{
struct rocker_world_ops *wops = rocker_port->rocker->wops;
- if (!wops->port_post_fini)
- return;
- wops->port_post_fini(rocker_port);
+ if (wops->port_post_fini)
+ wops->port_post_fini(rocker_port);
kfree(rocker_port->wpriv);
}
--
2.51.0
next prev parent reply other threads:[~2026-02-04 15:28 UTC|newest]
Thread overview: 144+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-04 14:39 [PATCH 6.18 000/122] 6.18.9-rc1 review Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 001/122] readdir: require opt-in for d_type flags Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 002/122] btrfs: zlib: fix the folio leak on S390 hardware acceleration Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 003/122] can: at91_can: Fix memory leak in at91_can_probe() Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 004/122] Bluetooth: hci_uart: fix null-ptr-deref in hci_uart_write_work Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 005/122] Bluetooth: MGMT: Fix memory leak in set_ssp_complete Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 006/122] net/mlx5: Fix memory leak in esw_acl_ingress_lgcy_setup() Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 007/122] can: gs_usb: gs_usb_receive_bulk_callback(): fix error message Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 008/122] net: bcmasp: fix early exit leak with fixed phy Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 009/122] octeon_ep: Fix memory leak in octep_device_setup() Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 010/122] bonding: annotate data-races around slave->last_rx Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 011/122] sfc: fix deadlock in RSS config read Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 012/122] net: mvpp2: cls: Fix memory leak in mvpp2_ethtool_cls_rule_ins() Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 013/122] ipv6: use the right ifindex when replying to icmpv6 from localhost Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 014/122] net: wwan: t7xx: fix potential skb->frags overflow in RX path Greg Kroah-Hartman
2026-02-04 14:39 ` [PATCH 6.18 015/122] net/mlx5: Fix return type mismatch in mlx5_esw_vport_vhca_id() Greg Kroah-Hartman
2026-02-04 14:39 ` Greg Kroah-Hartman [this message]
2026-02-04 14:39 ` [PATCH 6.18 017/122] mptcp: fix race in mptcp_pm_nl_flush_addrs_doit() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 018/122] net: spacemit: Check for netif_carrier_ok() in emac_stats_update() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 019/122] nfc: llcp: Fix memleak in nfc_llcp_send_ui_frame() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 020/122] bonding: fix use-after-free due to enslave fail after slave array update Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 021/122] ixgbe: fix memory leaks in the ixgbe_recovery_probe() path Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 022/122] ixgbe: dont initialize aci lock in ixgbe_recovery_probe() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 023/122] ice: Fix NULL pointer dereference in ice_vsi_set_napi_queues Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 024/122] ice: stop counting UDP csum mismatch as rx_errors Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 025/122] net/mlx5e: TC, delete flows only for existing peers Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 026/122] net/mlx5e: Account for netdev stats in ndo_get_stats64 Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 027/122] nfc: nci: Fix race between rfkill and nci_unregister_device() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 028/122] net: bridge: fix static key check Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 029/122] net/mlx5e: dont assume psp tx skbs are ipv6 csum handling Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 030/122] net: phy: micrel: fix clk warning when removing the driver Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 031/122] net/mlx5: fs, Fix inverted cap check in tx flow table root disconnect Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 032/122] net/mlx5: Initialize events outside devlink lock Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 033/122] net/mlx5: Fix vhca_id access call trace use before alloc Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 034/122] net/mlx5e: Skip ESN replay window setup for IPsec crypto offload Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 035/122] wifi: mac80211: parse all TTLM entries Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 036/122] wifi: mac80211: apply advertised TTLM from association response Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 037/122] wifi: mac80211: correctly decode TTLM with default link map Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 038/122] scsi: firewire: sbp-target: Fix overflow in sbp_make_tpg() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 039/122] ASoC: soc-acpi-intel-ptl-match: fix name_prefix of rt1320-2 Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 040/122] drm/xe: Skip address copy for sync-only execs Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 041/122] ASoC: Intel: sof_es8336: fix headphone GPIO logic inversion Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 042/122] gpiolib: acpi: use BIT_ULL() for u64 mask in address space handler Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 043/122] gpio: virtuser: fix UAF in configfs release path Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 044/122] drm/amd/pm: fix race in power state check before mutex lock Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 045/122] gpio: brcmstb: correct hwirq to bank map Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 046/122] kbuild: rpm-pkg: Generate debuginfo package manually Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 047/122] kbuild: Fix permissions of modules.builtin.modinfo Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 048/122] of/reserved_mem: Simplify the logic of fdt_scan_reserved_mem_reg_nodes() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 049/122] of: reserved_mem: Allow reserved_mem framework detect "cma=" kernel param Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 050/122] bcache: fix improper use of bi_end_io Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 051/122] bcache: use bio cloning for detached device requests Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 052/122] bcache: fix I/O accounting leak in detached_dev_do_request Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 053/122] dma/pool: distinguish between missing and exhausted atomic pools Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 054/122] drm/xe/configfs: Fix is_bound() pci_dev lifetime Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 055/122] drm/xe/nvm: Manage nvm aux cleanup with devres Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 056/122] drm/xe/nvm: Fix double-free on aux add failure Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 057/122] sched/deadline: Document dl_server Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 058/122] sched/deadline: Fix stuck dl_server Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 059/122] writeback: fix 100% CPU usage when dirtytime_expire_interval is 0 Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 060/122] pinctrl: lpass-lpi: implement .get_direction() for the GPIO driver Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 061/122] pinctrl: meson: mark the GPIO controller as sleeping Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 062/122] pinctrl: qcom: sm8350-lpass-lpi: Merge with SC7280 to fix I2S2 and SWR TX pins Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 063/122] perf: sched: Fix perf crash with new is_user_task() helper Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 064/122] firewire: core: fix race condition against transaction list Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 065/122] riscv: compat: fix COMPAT_UTS_MACHINE definition Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 066/122] rust: rbtree: fix documentation typo in CursorMut peek_next method Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 067/122] rust: kbuild: give `--config-path` to `rustfmt` in `.rsi` target Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 068/122] ASoC: fsl: imx-card: Do not force slot width to sample width Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 069/122] scsi: be2iscsi: Fix a memory leak in beiscsi_boot_get_sinfo() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 070/122] ASoC: amd: yc: Add DMI quirk for Acer TravelMate P216-41-TCO Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 071/122] gpio: pca953x: mask interrupts in irq shutdown Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 072/122] kbuild: rust: clean libpin_init_internal in mrproper Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 073/122] scsi: qla2xxx: edif: Fix dma_free_coherent() size Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 074/122] efivarfs: fix error propagation in efivar_entry_get() Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 075/122] nvmet: fix race in nvmet_bio_done() leading to NULL pointer dereference Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 076/122] ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machine Greg Kroah-Hartman
2026-02-04 14:40 ` [PATCH 6.18 077/122] gpio: rockchip: Stop calling pinctrl for set_direction Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 078/122] mm/kasan: fix KASAN poisoning in vrealloc() Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 079/122] mptcp: only reset subflow errors when propagated Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 080/122] selftests: mptcp: check no dup close events after error Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 081/122] selftests: mptcp: check subflow errors in close events Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 082/122] selftests: mptcp: join: fix local endp not being tracked Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 083/122] flex_proportions: make fprop_new_period() hardirq safe Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 084/122] btrfs: do not strictly require dirty metadata threshold for metadata writepages Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 085/122] mm/kfence: randomize the freelist on initialization Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 086/122] mm/memory-failure: fix missing ->mf_stats count in hugetlb poison Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 087/122] mm, swap: restore swap_space attr aviod kernel panic Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 088/122] mm/memory-failure: teach kill_accessing_process to accept hugetlb tail page pfn Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 089/122] mm/shmem, swap: fix race of truncate and swap entry split Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 090/122] net: fix segmentation of forwarding fraglist GRO Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 091/122] rust: bits: always inline functions using build_assert with arguments Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 092/122] rust: sync: atomic: Provide stub for `rusttest` 32-bit hosts Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 093/122] rust: sync: refcount: always inline functions using build_assert with arguments Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 094/122] scripts: generate_rust_analyzer: Add pin_init -> compiler_builtins dep Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 095/122] scripts: generate_rust_analyzer: Add pin_init_internal deps Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 096/122] scripts: generate_rust_analyzer: remove sysroot assertion Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 097/122] scripts: generate_rust_analyzer: compile sysroot with correct edition Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 098/122] scripts: generate_rust_analyzer: fix resolution of #[pin_data] macros Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 099/122] scripts: generate_rust_analyzer: Add compiler_builtins -> core dep Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 100/122] drm: Do not allow userspace to trigger kernel warnings in drm_gem_change_handle_ioctl() Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 101/122] drm/xe/xelp: Fix Wa_18022495364 Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 102/122] drm/tyr: depend on `COMMON_CLK` to fix build error Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 103/122] drm/msm/a6xx: fix bogus hwcg register updates Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 104/122] drm/imx/tve: fix probe device leak Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 105/122] drm/amd/pm: fix smu v13 soft clock frequency setting issue Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 106/122] drm/amd/pm: fix smu v14 " Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 107/122] drm/amdgpu/soc21: fix xclk for APUs Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 108/122] drm/amdgpu/gfx10: fix wptr reset in KGQ init Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 109/122] drm/amdgpu/gfx11: " Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 110/122] drm/amdgpu/gfx11: adjust KGQ reset sequence Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 111/122] drm/amdgpu/gfx12: fix wptr reset in KGQ init Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 112/122] drm/amdgpu/gfx12: adjust KGQ reset sequence Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 113/122] drm/amdgpu: fix NULL pointer dereference in amdgpu_gmc_filter_faults_remove Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 114/122] drm/amdgpu: Fix cond_exec handling in amdgpu_ib_schedule() Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 115/122] iommu/tegra241-cmdqv: Reset VCMDQ in tegra241_vcmdq_hw_init_user() Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 116/122] gpiolib: acpi: Fix potential out-of-boundary left shift Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 117/122] libbpf: Fix -Wdiscarded-qualifiers under C23 Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 118/122] Revert "drm/nouveau/disp: Set drm_mode_config_funcs.atomic_(check|commit)" Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 119/122] net/sched: act_ife: convert comma to semicolon Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 120/122] sched_ext: Dont kick CPUs running higher classes Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 121/122] sched_ext: Fix SCX_KICK_WAIT to work reliably Greg Kroah-Hartman
2026-02-04 14:41 ` [PATCH 6.18 122/122] mptcp: avoid dup SUB_CLOSED events after disconnect Greg Kroah-Hartman
2026-02-04 19:08 ` [PATCH 6.18 000/122] 6.18.9-rc1 review Achill Gilgenast
2026-02-04 19:52 ` Brett A C Sheffield
2026-02-04 20:20 ` Florian Fainelli
2026-02-04 20:27 ` Jon Hunter
2026-02-04 21:39 ` Justin Forbes
2026-02-04 23:08 ` Takeshi Ogasawara
2026-02-05 0:14 ` Peter Schneider
2026-02-05 6:03 ` Luna Jernberg
2026-02-05 7:34 ` Ron Economos
2026-02-05 11:47 ` Mark Brown
2026-02-05 14:33 ` Brett Mastbergen
2026-02-06 1:23 ` Hardik Garg
2026-02-06 4:27 ` Barry K. Nathan
2026-02-06 5:52 ` Shung-Hsi Yu
2026-02-06 8:03 ` Dileep malepu
2026-02-06 9:34 ` Miguel Ojeda
2026-02-06 11:59 ` Jeffrin Thalakkottoor
2026-02-06 12:31 ` Greg Kroah-Hartman
2026-02-06 13:17 ` Jeffrin Thalakkottoor
2026-02-06 13:20 ` Greg Kroah-Hartman
2026-02-06 13:52 ` Jeffrin Thalakkottoor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260204143852.451331169@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=patches@lists.linux.dev \
--cc=qikeyu2017@gmail.com \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox