2022-05-03 00:20:22

by Aaron Tomlin

[permalink] [raw]
Subject: [PATCH v5 0/3] module: Introduce module unload taint tracking

Hi Luis,

This iteration is still based on the latest mcgrof/modules-next branch.

I have decided still to use RCU even though no entry is ever removed from
the unloaded tainted modules list. That being said, if I understand
correctly, it is not safe in some instances to use 'module_mutex' in
print_modules(). So instead we disable preemption to ensure list traversal
with concurrent list manipulation e.g. list_add_rcu(), is safe too.

Changes since v4 [1]
- Moved code to kernel/module/tracking.c
(Luis Chamberlain)
- Used only strcmp() in try_add_tainted_module()
(Christophe Leroy)

Changes since v3 [2]
- Fixed kernel build error reported by kernel test robot i.e. moved
'#endif' outside 'if (!list_empty(&unloaded_tainted_modules))'
statement in the context of print_modules()
- Used strncmp() instead of memcmp()
(Oleksandr Natalenko)
- Removed the additional strlen()
(Christoph Lameter)

Changes since v2 [3]
- Dropped RFC from subject
- Removed the newline i.e. "\n" in printk()
- Always include the tainted module's unload count
- Unconditionally display each unloaded tainted module

Please let me know your thoughts.

[1]: https://lore.kernel.org/all/[email protected]/
[2]: https://lore.kernel.org/all/[email protected]/
[3]: https://lore.kernel.org/all/[email protected]/


Aaron Tomlin (3):
module: Make module_flags_taint() accept a module's taints bitmap and
usable outside core code
module: Move module_assert_mutex_or_preempt() to internal.h
module: Introduce module unload taint tracking

init/Kconfig | 11 ++++++++
kernel/module/Makefile | 1 +
kernel/module/internal.h | 34 ++++++++++++++++++++++
kernel/module/main.c | 24 ++++++----------
kernel/module/tracking.c | 61 ++++++++++++++++++++++++++++++++++++++++
5 files changed, 116 insertions(+), 15 deletions(-)
create mode 100644 kernel/module/tracking.c


base-commit: eeaec7801c421e17edda6e45a32d4a5596b633da
--
2.34.1


2022-05-03 22:22:52

by Luis Chamberlain

[permalink] [raw]
Subject: Re: [PATCH v5 0/3] module: Introduce module unload taint tracking

On Mon, May 02, 2022 at 09:51:02PM +0100, Aaron Tomlin wrote:
> Hi Luis,
>
> This iteration is still based on the latest mcgrof/modules-next branch.
>
> I have decided still to use RCU even though no entry is ever removed from
> the unloaded tainted modules list. That being said, if I understand
> correctly, it is not safe in some instances to use 'module_mutex' in
> print_modules(). So instead we disable preemption to ensure list traversal
> with concurrent list manipulation e.g. list_add_rcu(), is safe too.
>
> Changes since v4 [1]
> - Moved code to kernel/module/tracking.c
> (Luis Chamberlain)
> - Used only strcmp() in try_add_tainted_module()
> (Christophe Leroy)
>
> Changes since v3 [2]
> - Fixed kernel build error reported by kernel test robot i.e. moved
> '#endif' outside 'if (!list_empty(&unloaded_tainted_modules))'
> statement in the context of print_modules()
> - Used strncmp() instead of memcmp()
> (Oleksandr Natalenko)
> - Removed the additional strlen()
> (Christoph Lameter)
>
> Changes since v2 [3]
> - Dropped RFC from subject
> - Removed the newline i.e. "\n" in printk()
> - Always include the tainted module's unload count
> - Unconditionally display each unloaded tainted module
>
> Please let me know your thoughts.

Thanks! Queued onto modules-testing. If no issues are found I'll push to
modules-next soon after.

Luis