Thread (6 messages) 6 messages, 3 authors, 2024-02-17

Re: [RESEND PATCH v2] modules: wait do_free_init correctly

From: Changbin Du <hidden>
Date: 2024-01-30 01:40:49
Also in: lkml

On Mon, Jan 29, 2024 at 09:53:58AM -0800, Luis Chamberlain wrote:
On Mon, Jan 29, 2024 at 10:03:04AM +0800, Changbin Du wrote:
quoted
The commit 1a7b7d922081 ("modules: Use vmalloc special flag") moves
do_free_init() into a global workqueue instead of call_rcu(). So now
rcu_barrier() can not ensure that do_free_init has completed. We should
wait it via flush_work().

Without this fix, we still could encounter false positive reports in
W+X checking, and rcu synchronization is unnecessary.
You didn't answer my question, which should be documented in the commit log.

Does this mean we never freed modules init because of this? If so then
your commit log should clearly explain that. It should also explain that
if true (you have to verify) then it means we were no longer saving
the memory we wished to save, and that is important for distributions
which do want to save anything on memory. You may want to do a general
estimate on how much that means these days on any desktop / server.
Actually, I have explained it in commit msg. It's not about saving memory. The
synchronization here is just to ensure the module init's been freed before
doing W+X checking. The problem is that the current implementation is wrong,
rcu_barrier() cannot guarantee that. So we can encounter false positive reports.
But anyway, the module init will be freed, and it's just a timing related issue.
  Luis
-- 
Cheers,
Changbin Du
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help