diff mbox series

[v6,01/13] module: Move all into module/

Message ID 20220218212511.887059-2-atomlin@redhat.com (mailing list archive)
State Superseded
Headers show
Series module: core code clean up | expand

Commit Message

Aaron Tomlin Feb. 18, 2022, 9:24 p.m. UTC
No functional changes.

This patch moves all module related code into a separate directory,
modifies each file name and creates a new Makefile. Note: this effort
is in preparation to refactor core module code.

Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
---
 MAINTAINERS                                         | 2 +-
 kernel/Makefile                                     | 5 +----
 kernel/module/Makefile                              | 9 +++++++++
 kernel/{module_decompress.c => module/decompress.c} | 2 +-
 kernel/{module-internal.h => module/internal.h}     | 0
 kernel/{module.c => module/main.c}                  | 2 +-
 kernel/{module_signature.c => module/signature.c}   | 0
 kernel/{module_signing.c => module/signing.c}       | 2 +-
 8 files changed, 14 insertions(+), 8 deletions(-)
 create mode 100644 kernel/module/Makefile
 rename kernel/{module_decompress.c => module/decompress.c} (99%)
 rename kernel/{module-internal.h => module/internal.h} (100%)
 rename kernel/{module.c => module/main.c} (99%)
 rename kernel/{module_signature.c => module/signature.c} (100%)
 rename kernel/{module_signing.c => module/signing.c} (97%)

Comments

Christophe Leroy Feb. 21, 2022, 12:21 p.m. UTC | #1
Le 18/02/2022 à 22:24, Aaron Tomlin a écrit :
> No functional changes.
> 
> This patch moves all module related code into a separate directory,
> modifies each file name and creates a new Makefile. Note: this effort
> is in preparation to refactor core module code.
> 
> Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
> ---
>   MAINTAINERS                                         | 2 +-
>   kernel/Makefile                                     | 5 +----
>   kernel/module/Makefile                              | 9 +++++++++
>   kernel/{module_decompress.c => module/decompress.c} | 2 +-
>   kernel/{module-internal.h => module/internal.h}     | 0
>   kernel/{module.c => module/main.c}                  | 2 +-
>   kernel/{module_signature.c => module/signature.c}   | 0
>   kernel/{module_signing.c => module/signing.c}       | 2 +-
>   8 files changed, 14 insertions(+), 8 deletions(-)
>   create mode 100644 kernel/module/Makefile
>   rename kernel/{module_decompress.c => module/decompress.c} (99%)
>   rename kernel/{module-internal.h => module/internal.h} (100%)
>   rename kernel/{module.c => module/main.c} (99%)
>   rename kernel/{module_signature.c => module/signature.c} (100%)
>   rename kernel/{module_signing.c => module/signing.c} (97%)
> 

I'm wondering whether we should avoid moving module_signature.c and 
leave it in kernel/ as this file is used even when CONFIG_MODULES is not 
selected, and he is the only one like this.

Keeping it outside of kernel/module/ would allow to conditionaly build 
entire kernel/module/ based of CONFIG_MODULES and then avoid all checks 
against CONFIG_MODULES which look misleading at times.


Christophe
Christophe Leroy Feb. 21, 2022, 1:13 p.m. UTC | #2
Le 18/02/2022 à 22:24, Aaron Tomlin a écrit :
> No functional changes.
> 
> This patch moves all module related code into a separate directory,
> modifies each file name and creates a new Makefile. Note: this effort
> is in preparation to refactor core module code.
> 
> Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
> ---
>   MAINTAINERS                                         | 2 +-
>   kernel/Makefile                                     | 5 +----
>   kernel/module/Makefile                              | 9 +++++++++
>   kernel/{module_decompress.c => module/decompress.c} | 2 +-
>   kernel/{module-internal.h => module/internal.h}     | 0
>   kernel/{module.c => module/main.c}                  | 2 +-
>   kernel/{module_signature.c => module/signature.c}   | 0
>   kernel/{module_signing.c => module/signing.c}       | 2 +-
>   8 files changed, 14 insertions(+), 8 deletions(-)
>   create mode 100644 kernel/module/Makefile
>   rename kernel/{module_decompress.c => module/decompress.c} (99%)
>   rename kernel/{module-internal.h => module/internal.h} (100%)
>   rename kernel/{module.c => module/main.c} (99%)
>   rename kernel/{module_signature.c => module/signature.c} (100%)
>   rename kernel/{module_signing.c => module/signing.c} (97%)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index bd86ed9fbc79..463bdb829db4 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -13012,7 +13012,7 @@ L:	linux-kernel@vger.kernel.org
>   S:	Maintained
>   T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git modules-next
>   F:	include/linux/module.h
> -F:	kernel/module.c
> +F:	kernel/module/
>   
>   MONOLITHIC POWER SYSTEM PMIC DRIVER
>   M:	Saravanan Sekar <sravanhome@gmail.com>
> diff --git a/kernel/Makefile b/kernel/Makefile
> index 56f4ee97f328..3a6380975c57 100644
> --- a/kernel/Makefile
> +++ b/kernel/Makefile

This file also contains:

KCOV_INSTRUMENT_module.o := n

It needs to follow through into kernel/module/Makefile, with a copy of 
the comment. And then it needs to be taken care of while dismantling main.c


> @@ -53,6 +53,7 @@ obj-y += rcu/
>   obj-y += livepatch/
>   obj-y += dma/
>   obj-y += entry/
> +obj-y += module/
>   
>   obj-$(CONFIG_KCMP) += kcmp.o
>   obj-$(CONFIG_FREEZER) += freezer.o
> @@ -66,10 +67,6 @@ ifneq ($(CONFIG_SMP),y)
>   obj-y += up.o
>   endif
>   obj-$(CONFIG_UID16) += uid16.o
> -obj-$(CONFIG_MODULES) += module.o
> -obj-$(CONFIG_MODULE_DECOMPRESS) += module_decompress.o
> -obj-$(CONFIG_MODULE_SIG) += module_signing.o
> -obj-$(CONFIG_MODULE_SIG_FORMAT) += module_signature.o
>   obj-$(CONFIG_KALLSYMS) += kallsyms.o
>   obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
>   obj-$(CONFIG_CRASH_CORE) += crash_core.o
> diff --git a/kernel/module/Makefile b/kernel/module/Makefile
> new file mode 100644
> index 000000000000..2902fc7d0ef1
> --- /dev/null
> +++ b/kernel/module/Makefile
> @@ -0,0 +1,9 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Makefile for linux kernel module support
> +#
> +
> +obj-$(CONFIG_MODULES) += main.o
> +obj-$(CONFIG_MODULE_DECOMPRESS) += decompress.o
> +obj-$(CONFIG_MODULE_SIG) += signing.o
> +obj-$(CONFIG_MODULE_SIG_FORMAT) += signature.o
Aaron Tomlin Feb. 22, 2022, 10:48 a.m. UTC | #3
On Mon 2022-02-21 12:21 +0000, Christophe Leroy wrote:
>
>
> Le 18/02/2022 à 22:24, Aaron Tomlin a écrit :
> > No functional changes.
> >
> > This patch moves all module related code into a separate directory,
> > modifies each file name and creates a new Makefile. Note: this effort
> > is in preparation to refactor core module code.
> >
> > Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
> > ---
> >   MAINTAINERS                                         | 2 +-
> >   kernel/Makefile                                     | 5 +----
> >   kernel/module/Makefile                              | 9 +++++++++
> >   kernel/{module_decompress.c => module/decompress.c} | 2 +-
> >   kernel/{module-internal.h => module/internal.h}     | 0
> >   kernel/{module.c => module/main.c}                  | 2 +-
> >   kernel/{module_signature.c => module/signature.c}   | 0
> >   kernel/{module_signing.c => module/signing.c}       | 2 +-
> >   8 files changed, 14 insertions(+), 8 deletions(-)
> >   create mode 100644 kernel/module/Makefile
> >   rename kernel/{module_decompress.c => module/decompress.c} (99%)
> >   rename kernel/{module-internal.h => module/internal.h} (100%)
> >   rename kernel/{module.c => module/main.c} (99%)
> >   rename kernel/{module_signature.c => module/signature.c} (100%)
> >   rename kernel/{module_signing.c => module/signing.c} (97%)
> >
>
> I'm wondering whether we should avoid moving module_signature.c and
> leave it in kernel/ as this file is used even when CONFIG_MODULES is not
> selected, and he is the only one like this.
>
> Keeping it outside of kernel/module/ would allow to conditionaly build
> entire kernel/module/ based of CONFIG_MODULES and then avoid all checks
> against CONFIG_MODULES which look misleading at times.

Luis,

What is your opinion on this? Indeed, mod_check_sig() is used by code
outside of kernel/module/ too i.e. ima_read_modsig(); albeit, I believe it
does make sense to keep it under kernel/module/ since the function in
question is used to review a given module's signature anyway.

Kind regards,
Christophe Leroy Feb. 22, 2022, 11:20 a.m. UTC | #4
Le 22/02/2022 à 12:13, Aaron Tomlin a écrit :
> On Mon 2022-02-21 13:13 +0000, Christophe Leroy wrote:
>>> diff --git a/kernel/Makefile b/kernel/Makefile
>>> index 56f4ee97f328..3a6380975c57 100644
>>> --- a/kernel/Makefile
>>> +++ b/kernel/Makefile
>>
>> This file also contains:
>>
>> KCOV_INSTRUMENT_module.o := n
>>
>> It needs to follow through into kernel/module/Makefile, with a copy of
>> the comment. And then it needs to be taken care of while dismantling main.c
> 
> Christophe,
> 
> I do not see why this is necessary.
> 
> 

I don't know.

The comment says:

# These are called from save_stack_trace() on slub debug path,
# and produce insane amounts of uninteresting coverage.

This was brought by commit 5c9a8750a640 ("kernel: add kcov code coverage")

Since then, some architectures don't have save_stack_trace() anymore as 
they were converted to generic ARCH_STACKWALK.
It was done on powerpc by commit a1cdef04f22d ("powerpc: Convert 
stacktrace to generic ARCH_STACKWALK")

Whatever you decide to do, you can't leave this in kernel/Makefile as 
module.o is gone.

Christophe
Aaron Tomlin Feb. 22, 2022, 11:39 a.m. UTC | #5
On Tue 2022-02-22 11:20 +0000, Christophe Leroy wrote:
> I don't know.
>
> The comment says:
>
> # These are called from save_stack_trace() on slub debug path,
> # and produce insane amounts of uninteresting coverage.
>
> This was brought by commit 5c9a8750a640 ("kernel: add kcov code coverage")
>
> Since then, some architectures don't have save_stack_trace() anymore as
> they were converted to generic ARCH_STACKWALK.
> It was done on powerpc by commit a1cdef04f22d ("powerpc: Convert
> stacktrace to generic ARCH_STACKWALK")
>
> Whatever you decide to do, you can't leave this in kernel/Makefile as
> module.o is gone.

Fair enough. I'll move it and copy the comment to kernel/module/Makefile.
Luis Chamberlain Feb. 23, 2022, 1:16 a.m. UTC | #6
On Tue, Feb 22, 2022 at 10:48:00AM +0000, Aaron Tomlin wrote:
> On Mon 2022-02-21 12:21 +0000, Christophe Leroy wrote:
> > Le 18/02/2022 à 22:24, Aaron Tomlin a écrit :
> > >   kernel/{module_signature.c => module/signature.c}   | 0
> > Keeping it outside of kernel/module/ would allow to conditionaly build
> > entire kernel/module/ based of CONFIG_MODULES and then avoid all checks
> > against CONFIG_MODULES which look misleading at times.
> 
> Luis,
> 
> What is your opinion on this? Indeed, mod_check_sig() is used by code
> outside of kernel/module/ too i.e. ima_read_modsig(); albeit, I believe it
> does make sense to keep it under kernel/module/ since the function in
> question is used to review a given module's signature anyway.

How about:

obj-$(CONFIG_MODULE_SIG_FORMAT) += module/module_signature.o 

  Luis
Aaron Tomlin Feb. 23, 2022, 4:57 p.m. UTC | #7
On Tue 2022-02-22 17:16 -0800, Luis Chamberlain wrote:
> How about:
>
> obj-$(CONFIG_MODULE_SIG_FORMAT) += module/module_signature.o
>
>   Luis

Hi Luis,

Please see v8 [1].

[1]: https://lore.kernel.org/all/20220222141303.1392190-1-atomlin@redhat.com/


Kind regards,
diff mbox series

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index bd86ed9fbc79..463bdb829db4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13012,7 +13012,7 @@  L:	linux-kernel@vger.kernel.org
 S:	Maintained
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git modules-next
 F:	include/linux/module.h
-F:	kernel/module.c
+F:	kernel/module/
 
 MONOLITHIC POWER SYSTEM PMIC DRIVER
 M:	Saravanan Sekar <sravanhome@gmail.com>
diff --git a/kernel/Makefile b/kernel/Makefile
index 56f4ee97f328..3a6380975c57 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -53,6 +53,7 @@  obj-y += rcu/
 obj-y += livepatch/
 obj-y += dma/
 obj-y += entry/
+obj-y += module/
 
 obj-$(CONFIG_KCMP) += kcmp.o
 obj-$(CONFIG_FREEZER) += freezer.o
@@ -66,10 +67,6 @@  ifneq ($(CONFIG_SMP),y)
 obj-y += up.o
 endif
 obj-$(CONFIG_UID16) += uid16.o
-obj-$(CONFIG_MODULES) += module.o
-obj-$(CONFIG_MODULE_DECOMPRESS) += module_decompress.o
-obj-$(CONFIG_MODULE_SIG) += module_signing.o
-obj-$(CONFIG_MODULE_SIG_FORMAT) += module_signature.o
 obj-$(CONFIG_KALLSYMS) += kallsyms.o
 obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
 obj-$(CONFIG_CRASH_CORE) += crash_core.o
diff --git a/kernel/module/Makefile b/kernel/module/Makefile
new file mode 100644
index 000000000000..2902fc7d0ef1
--- /dev/null
+++ b/kernel/module/Makefile
@@ -0,0 +1,9 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Makefile for linux kernel module support
+#
+
+obj-$(CONFIG_MODULES) += main.o
+obj-$(CONFIG_MODULE_DECOMPRESS) += decompress.o
+obj-$(CONFIG_MODULE_SIG) += signing.o
+obj-$(CONFIG_MODULE_SIG_FORMAT) += signature.o
diff --git a/kernel/module_decompress.c b/kernel/module/decompress.c
similarity index 99%
rename from kernel/module_decompress.c
rename to kernel/module/decompress.c
index ffef98a20320..d14d6443225a 100644
--- a/kernel/module_decompress.c
+++ b/kernel/module/decompress.c
@@ -12,7 +12,7 @@ 
 #include <linux/sysfs.h>
 #include <linux/vmalloc.h>
 
-#include "module-internal.h"
+#include "internal.h"
 
 static int module_extend_max_pages(struct load_info *info, unsigned int extent)
 {
diff --git a/kernel/module-internal.h b/kernel/module/internal.h
similarity index 100%
rename from kernel/module-internal.h
rename to kernel/module/internal.h
diff --git a/kernel/module.c b/kernel/module/main.c
similarity index 99%
rename from kernel/module.c
rename to kernel/module/main.c
index 46a5c2ed1928..34a2b0cf3c3e 100644
--- a/kernel/module.c
+++ b/kernel/module/main.c
@@ -58,7 +58,7 @@ 
 #include <linux/dynamic_debug.h>
 #include <linux/audit.h>
 #include <uapi/linux/module.h>
-#include "module-internal.h"
+#include "internal.h"
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/module.h>
diff --git a/kernel/module_signature.c b/kernel/module/signature.c
similarity index 100%
rename from kernel/module_signature.c
rename to kernel/module/signature.c
diff --git a/kernel/module_signing.c b/kernel/module/signing.c
similarity index 97%
rename from kernel/module_signing.c
rename to kernel/module/signing.c
index 8723ae70ea1f..8aeb6d2ee94b 100644
--- a/kernel/module_signing.c
+++ b/kernel/module/signing.c
@@ -12,7 +12,7 @@ 
 #include <linux/string.h>
 #include <linux/verification.h>
 #include <crypto/public_key.h>
-#include "module-internal.h"
+#include "internal.h"
 
 /*
  * Verify the signature on a module.