Re: Patch "lib: alloc_tag_module_unload must wait for pending kfree_rcu calls" has been added to the 6.11-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 1, 2024 at 6:58 AM Sasha Levin <sashal@xxxxxxxxxx> wrote:
>
> This is a note to let you know that I've just added the patch titled
>
>     lib: alloc_tag_module_unload must wait for pending kfree_rcu calls
>
> to the 6.11-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>
> The filename of the patch is:
>      lib-alloc_tag_module_unload-must-wait-for-pending-kf.patch
> and it can be found in the queue-6.11 subdirectory.

Thanks Sasha! Could you please double-check that the prerequisite
patch https://lore.kernel.org/all/20241021171003.2907935-1-surenb@xxxxxxxxxx/
was also picked up? I don't see it in the queue-6.11 directory.
Without that patch this one will cause build errors, that's why I sent
them as a patchset.
Thanks,
Suren.

>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@xxxxxxxxxxxxxxx> know about it.
>
>
>
> commit 536dfe685ebd28b27ebfbc3d4b9168207b7e28a3
> Author: Florian Westphal <fw@xxxxxxxxx>
> Date:   Mon Oct 7 22:52:24 2024 +0200
>
>     lib: alloc_tag_module_unload must wait for pending kfree_rcu calls
>
>     [ Upstream commit dc783ba4b9df3fb3e76e968b2cbeb9960069263c ]
>
>     Ben Greear reports following splat:
>      ------------[ cut here ]------------
>      net/netfilter/nf_nat_core.c:1114 module nf_nat func:nf_nat_register_fn has 256 allocated at module unload
>      WARNING: CPU: 1 PID: 10421 at lib/alloc_tag.c:168 alloc_tag_module_unload+0x22b/0x3f0
>      Modules linked in: nf_nat(-) btrfs ufs qnx4 hfsplus hfs minix vfat msdos fat
>     ...
>      Hardware name: Default string Default string/SKYBAY, BIOS 5.12 08/04/2020
>      RIP: 0010:alloc_tag_module_unload+0x22b/0x3f0
>       codetag_unload_module+0x19b/0x2a0
>       ? codetag_load_module+0x80/0x80
>
>     nf_nat module exit calls kfree_rcu on those addresses, but the free
>     operation is likely still pending by the time alloc_tag checks for leaks.
>
>     Wait for outstanding kfree_rcu operations to complete before checking
>     resolves this warning.
>
>     Reproducer:
>     unshare -n iptables-nft -t nat -A PREROUTING -p tcp
>     grep nf_nat /proc/allocinfo # will list 4 allocations
>     rmmod nft_chain_nat
>     rmmod nf_nat                # will WARN.
>
>     [akpm@xxxxxxxxxxxxxxxxxxxx: add comment]
>     Link: https://lkml.kernel.org/r/20241007205236.11847-1-fw@xxxxxxxxx
>     Fixes: a473573964e5 ("lib: code tagging module support")
>     Signed-off-by: Florian Westphal <fw@xxxxxxxxx>
>     Reported-by: Ben Greear <greearb@xxxxxxxxxxxxxxx>
>     Closes: https://lore.kernel.org/netdev/bdaaef9d-4364-4171-b82b-bcfc12e207eb@xxxxxxxxxxxxxxx/
>     Cc: Uladzislau Rezki <urezki@xxxxxxxxx>
>     Cc: Vlastimil Babka <vbabka@xxxxxxx>
>     Cc: Suren Baghdasaryan <surenb@xxxxxxxxxx>
>     Cc: Kent Overstreet <kent.overstreet@xxxxxxxxx>
>     Cc: <stable@xxxxxxxxxxxxxxx>
>     Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
>     Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
>
> diff --git a/lib/codetag.c b/lib/codetag.c
> index afa8a2d4f3173..d1fbbb7c2ec3d 100644
> --- a/lib/codetag.c
> +++ b/lib/codetag.c
> @@ -228,6 +228,9 @@ bool codetag_unload_module(struct module *mod)
>         if (!mod)
>                 return true;
>
> +       /* await any module's kfree_rcu() operations to complete */
> +       kvfree_rcu_barrier();
> +
>         mutex_lock(&codetag_lock);
>         list_for_each_entry(cttype, &codetag_types, link) {
>                 struct codetag_module *found = NULL;





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux