Re: [PATCH] module: print module name on refcount error
From: Michal Hocko <mhocko@suse.com>
Date: 2023-07-10 05:43:13
Also in:
lkml
On Fri 07-07-23 11:56:49, Luis Chamberlain wrote:
On Mon, Jul 03, 2023 at 03:47:22PM +0200, Michal Hocko wrote:quoted
On Fri 30-06-23 16:05:33, Luis Chamberlain wrote: [...]quoted
What prevents code from racing the free with a random module_put() called by some other piece of code?Wouldn't be ref count a garbage already? How can you race when freeing if module_put fail?It could yes, ie, so this risks at all being junk.
Could you be more specific please? I still do not see a scenario where module string name would be junk while refcount itself would be a valid memory.
So best IMHO is to tidy up all the get / puts and add respective tests to fix all this mess with proper messages as needed. My cursory review of the refcnt stuf is I see some races possible.
It would likely be better to use refcount_t instead of atomic_t.
While I'd be happy to help debugging aids, adding accesses to random memory for a string seems more risk prone.
If there is really a scenario when module could be unloaded leaving dangling struct module behind then we have a real problem as this is exported to userspace IIRC. Not to mention module_get/put calls modifying memory (UAF). -- Michal Hocko SUSE Labs