linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/14] mm/init/kernel: missing-prototypes warnings
@ 2023-05-17 13:10 Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 01/14] mm: percpu: unhide pcpu_embed_first_chunk prototype Arnd Bergmann
                   ` (13 more replies)
  0 siblings, 14 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

These are patches addressing -Wmissing-prototypes warnings in common
kernel code and memory management code files that usually get merged
through the -mm tree.

Andrew, can you pick these up in the -mm tree?

     Arnd

Arnd Bergmann (14):
  mm: percpu: unhide pcpu_embed_first_chunk prototype
  mm: page_poison: always declare __kernel_map_pages() function
  mm: sparse: mark populate_section_memmap() static
  audit: avoid missing-prototype warnings
  lib: devmem_is_allowed: include linux/io.h
  locking: add lockevent_read() prototype
  panic: hide unused global functions
  panic: make function declarations visible
  kunit: include debugfs header file
  suspend: add a arch_resume_nosmt() prototype
  init: consolidate prototypes in linux/init.h
  init: move cifs_root_data() prototype into linux/mount.h
  thread_info: move function declarations to linux/thread_info.h
  time_namespace: always provide arch_get_vdso_data() prototype for vdso

 arch/arm/include/asm/irq.h           |  1 -
 arch/arm64/include/asm/thread_info.h |  4 ----
 arch/microblaze/include/asm/setup.h  |  2 --
 arch/mips/include/asm/irq.h          |  1 -
 arch/parisc/kernel/smp.c             |  1 -
 arch/powerpc/include/asm/irq.h       |  1 -
 arch/riscv/include/asm/irq.h         |  2 --
 arch/riscv/include/asm/timex.h       |  2 --
 arch/s390/include/asm/thread_info.h  |  3 ---
 arch/s390/kernel/entry.h             |  2 --
 arch/sh/include/asm/irq.h            |  1 -
 arch/sh/include/asm/rtc.h            |  2 --
 arch/sh/include/asm/thread_info.h    |  3 ---
 arch/sparc/include/asm/irq_32.h      |  1 -
 arch/sparc/include/asm/irq_64.h      |  1 -
 arch/sparc/include/asm/timer_64.h    |  1 -
 arch/sparc/kernel/kernel.h           |  4 ----
 arch/x86/include/asm/irq.h           |  2 --
 arch/x86/include/asm/mem_encrypt.h   |  3 ---
 arch/x86/include/asm/thread_info.h   |  3 ---
 arch/x86/include/asm/time.h          |  1 -
 arch/x86/include/asm/tsc.h           |  1 -
 include/asm-generic/bug.h            |  5 +++--
 include/linux/acpi.h                 |  3 ++-
 include/linux/audit.h                |  2 --
 include/linux/audit_arch.h           |  2 ++
 include/linux/delay.h                |  1 +
 include/linux/init.h                 | 20 ++++++++++++++++++++
 include/linux/mm.h                   |  3 +--
 include/linux/mount.h                |  2 ++
 include/linux/panic.h                |  3 +++
 include/linux/percpu.h               |  2 --
 include/linux/suspend.h              |  2 ++
 include/linux/thread_info.h          |  5 +++++
 include/linux/time_namespace.h       |  3 ++-
 init/do_mounts.c                     |  2 --
 init/main.c                          | 18 ------------------
 kernel/audit.h                       |  2 +-
 kernel/locking/lock_events.h         |  4 ++++
 kernel/panic.c                       |  3 +--
 lib/devmem_is_allowed.c              |  1 +
 lib/kunit/debugfs.c                  |  1 +
 mm/sparse.c                          |  2 +-
 43 files changed, 52 insertions(+), 76 deletions(-)

-- 
2.39.2


Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Helge Deller <deller@gmx.de>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: x86@kernel.org
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Paul Moore <paul@paul-moore.com>
Cc: Eric Paris <eparis@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Dennis Zhou <dennis@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Waiman Long <longman@redhat.com>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mips@vger.kernel.org
Cc: linux-parisc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-riscv@lists.infradead.org
Cc: linux-s390@vger.kernel.org
Cc: linux-sh@vger.kernel.org
Cc: audit@vger.kernel.org
Cc: linux-mm@kvack.org
Cc: linux-pm@vger.kernel.org
Cc: linux-kselftest@vger.kernel.org
Cc: kunit-dev@googlegroups.com

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 01/14] mm: percpu: unhide pcpu_embed_first_chunk prototype
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 02/14] mm: page_poison: always declare __kernel_map_pages() function Arnd Bergmann
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

This function is called whenever CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK
or CONFIG_HAVE_SETUP_PER_CPU_AREA, but only declared when the
former is set:

mm/percpu.c:3055:12: error: no previous prototype for 'pcpu_embed_first_chunk' [-Werror=missing-prototypes]

There is no real point in hiding declarations, so just remove
the #ifdef here.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/percpu.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/include/linux/percpu.h b/include/linux/percpu.h
index 1338ea2aa720..42125cf9c506 100644
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -103,12 +103,10 @@ extern void __init pcpu_free_alloc_info(struct pcpu_alloc_info *ai);
 extern void __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai,
 					 void *base_addr);
 
-#ifdef CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK
 extern int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size,
 				size_t atom_size,
 				pcpu_fc_cpu_distance_fn_t cpu_distance_fn,
 				pcpu_fc_cpu_to_node_fn_t cpu_to_nd_fn);
-#endif
 
 #ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK
 void __init pcpu_populate_pte(unsigned long addr);
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 02/14] mm: page_poison: always declare __kernel_map_pages() function
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 01/14] mm: percpu: unhide pcpu_embed_first_chunk prototype Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 03/14] mm: sparse: mark populate_section_memmap() static Arnd Bergmann
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

The __kernel_map_pages() function is mainly used for
CONFIG_DEBUG_PAGEALLOC, but has a number of architecture specific
definitions that may also be used in other configurations, as well
as a global fallback definition for architectures that do not support
DEBUG_PAGEALLOC.

When the option is disabled, any definitions without the prototype
cause a warning:

mm/page_poison.c:102:6: error: no previous prototype for '__kernel_map_pages' [-Werror=missing-prototypes]

The function is a trivial nop here, so just declare it anyway
to avoid the warning.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/mm.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 27ce77080c79..e95d7c575ea6 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -3453,13 +3453,12 @@ static inline bool debug_pagealloc_enabled_static(void)
 	return static_branch_unlikely(&_debug_pagealloc_enabled);
 }
 
-#ifdef CONFIG_DEBUG_PAGEALLOC
 /*
  * To support DEBUG_PAGEALLOC architecture must ensure that
  * __kernel_map_pages() never fails
  */
 extern void __kernel_map_pages(struct page *page, int numpages, int enable);
-
+#ifdef CONFIG_DEBUG_PAGEALLOC
 static inline void debug_pagealloc_map_pages(struct page *page, int numpages)
 {
 	if (debug_pagealloc_enabled_static())
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 03/14] mm: sparse: mark populate_section_memmap() static
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 01/14] mm: percpu: unhide pcpu_embed_first_chunk prototype Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 02/14] mm: page_poison: always declare __kernel_map_pages() function Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 04/14] audit: avoid missing-prototype warnings Arnd Bergmann
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

There are two definitions of this function, but the second one
lacks the 'static' annotation:

mm/sparse.c:704:25: error: no previous prototype for 'populate_section_memmap' [-Werror=missing-prototypes]

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 mm/sparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/sparse.c b/mm/sparse.c
index c2afdb26039e..b8d5d58fe240 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -701,7 +701,7 @@ static int fill_subsection_map(unsigned long pfn, unsigned long nr_pages)
 	return rc;
 }
 #else
-struct page * __meminit populate_section_memmap(unsigned long pfn,
+static struct page * __meminit populate_section_memmap(unsigned long pfn,
 		unsigned long nr_pages, int nid, struct vmem_altmap *altmap,
 		struct dev_pagemap *pgmap)
 {
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 04/14] audit: avoid missing-prototype warnings
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (2 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 03/14] mm: sparse: mark populate_section_memmap() static Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 14:33   ` [PATCH 4/14] " Paul Moore
  2023-05-17 13:10 ` [PATCH 05/14] lib: devmem_is_allowed: include linux/io.h Arnd Bergmann
                   ` (9 subsequent siblings)
  13 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

Building with 'make W=1' reveals two function definitions without
a previous prototype in the audit code:

lib/compat_audit.c:32:5: error: no previous prototype for 'audit_classify_compat_syscall' [-Werror=missing-prototypes]
kernel/audit.c:1813:14: error: no previous prototype for 'audit_serial' [-Werror=missing-prototypes]

The first one needs a declaration from linux/audit.h but cannot
include that header without causing conflicting (compat) syscall number
definitions, so move the it into linux/audit_arch.h.

The second one is declared conditionally based on CONFIG_AUDITSYSCALL
but needed as a local function even when that option is disabled, so
move the declaration out of the #ifdef block.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/audit.h      | 2 --
 include/linux/audit_arch.h | 2 ++
 kernel/audit.h             | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/linux/audit.h b/include/linux/audit.h
index 31086a72e32a..6a3a9e122bb5 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -130,8 +130,6 @@ extern unsigned compat_dir_class[];
 extern unsigned compat_chattr_class[];
 extern unsigned compat_signal_class[];
 
-extern int audit_classify_compat_syscall(int abi, unsigned syscall);
-
 /* audit_names->type values */
 #define	AUDIT_TYPE_UNKNOWN	0	/* we don't know yet */
 #define	AUDIT_TYPE_NORMAL	1	/* a "normal" audit record */
diff --git a/include/linux/audit_arch.h b/include/linux/audit_arch.h
index 8fdb1afe251a..0e34d673ef17 100644
--- a/include/linux/audit_arch.h
+++ b/include/linux/audit_arch.h
@@ -21,4 +21,6 @@ enum auditsc_class_t {
 	AUDITSC_NVALS /* count */
 };
 
+extern int audit_classify_compat_syscall(int abi, unsigned syscall);
+
 #endif
diff --git a/kernel/audit.h b/kernel/audit.h
index c57b008b9914..94738bce40b2 100644
--- a/kernel/audit.h
+++ b/kernel/audit.h
@@ -259,8 +259,8 @@ extern struct tty_struct *audit_get_tty(void);
 extern void audit_put_tty(struct tty_struct *tty);
 
 /* audit watch/mark/tree functions */
-#ifdef CONFIG_AUDITSYSCALL
 extern unsigned int audit_serial(void);
+#ifdef CONFIG_AUDITSYSCALL
 extern int auditsc_get_stamp(struct audit_context *ctx,
 			      struct timespec64 *t, unsigned int *serial);
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 05/14] lib: devmem_is_allowed: include linux/io.h
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (3 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 04/14] audit: avoid missing-prototype warnings Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 06/14] locking: add lockevent_read() prototype Arnd Bergmann
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

The devmem_is_allowed() function is defined in a file of the same name,
but the declaration is in asm/io.h, which is not included there, causing
a W=1 warning:

lib/devmem_is_allowed.c:20:5: error: no previous prototype for 'devmem_is_allowed' [-Werror=missing-prototypes]

Include the appropriate header to avoid the warning.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 lib/devmem_is_allowed.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/devmem_is_allowed.c b/lib/devmem_is_allowed.c
index 60be9e24bd57..9c060c69f134 100644
--- a/lib/devmem_is_allowed.c
+++ b/lib/devmem_is_allowed.c
@@ -10,6 +10,7 @@
 
 #include <linux/mm.h>
 #include <linux/ioport.h>
+#include <linux/io.h>
 
 /*
  * devmem_is_allowed() checks to see if /dev/mem access to a certain address
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 06/14] locking: add lockevent_read() prototype
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (4 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 05/14] lib: devmem_is_allowed: include linux/io.h Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 07/14] panic: hide unused global functions Arnd Bergmann
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

lockevent_read() has a __weak definition and the only caller in
kernel/locking/lock_events.c, plus a strong definition in qspinlock_stat.h
that overrides it, but no other declaration. This causes a W=1
warning:

kernel/locking/lock_events.c:61:16: error: no previous prototype for 'lockevent_read' [-Werror=missing-prototypes]

Add shared prototype to avoid the warnings.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 kernel/locking/lock_events.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel/locking/lock_events.h b/kernel/locking/lock_events.h
index 8c7e7d25f09c..a6016b91803d 100644
--- a/kernel/locking/lock_events.h
+++ b/kernel/locking/lock_events.h
@@ -57,4 +57,8 @@ static inline void __lockevent_add(enum lock_events event, int inc)
 #define lockevent_cond_inc(ev, c)
 
 #endif /* CONFIG_LOCK_EVENT_COUNTS */
+
+ssize_t lockevent_read(struct file *file, char __user *user_buf,
+		       size_t count, loff_t *ppos);
+
 #endif /* __LOCKING_LOCK_EVENTS_H */
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 07/14] panic: hide unused global functions
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (5 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 06/14] locking: add lockevent_read() prototype Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 08/14] panic: make function declarations visible Arnd Bergmann
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

Building with W=1 shows warnings about two functions that have
no declaration or caller in certain configurations:

kernel/panic.c:688:6: error: no previous prototype for 'warn_slowpath_fmt' [-Werror=missing-prototypes]
kernel/panic.c:710:6: error: no previous prototype for '__warn_printk' [-Werror=missing-prototypes]

Enclose the definition in the same #ifdef check as the declaration.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 kernel/panic.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/kernel/panic.c b/kernel/panic.c
index 886d2ebd0a0d..10effe40a3fa 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -684,6 +684,7 @@ void __warn(const char *file, int line, void *caller, unsigned taint,
 	add_taint(taint, LOCKDEP_STILL_OK);
 }
 
+#ifdef CONFIG_BUG
 #ifndef __WARN_FLAGS
 void warn_slowpath_fmt(const char *file, int line, unsigned taint,
 		       const char *fmt, ...)
@@ -722,8 +723,6 @@ void __warn_printk(const char *fmt, ...)
 EXPORT_SYMBOL(__warn_printk);
 #endif
 
-#ifdef CONFIG_BUG
-
 /* Support resetting WARN*_ONCE state */
 
 static int clear_warn_once_set(void *data, u64 val)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 08/14] panic: make function declarations visible
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (6 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 07/14] panic: hide unused global functions Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:10 ` [PATCH 09/14] kunit: include debugfs header file Arnd Bergmann
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

A few panic() related functions have a global definition but
not declaration, which causes a warning with W=1:

kernel/panic.c:710:6: error: no previous prototype for '__warn_printk' [-Werror=missing-prototypes]
kernel/panic.c:756:24: error: no previous prototype for '__stack_chk_fail' [-Werror=missing-prototypes]
kernel/exit.c:1917:32: error: no previous prototype for 'abort' [-Werror=missing-prototypes]

__warn_printk() is called both as a global function when CONFIG_BUG
is enabled, and as a local function in other configs. The other
two here are called indirectly from generated or assembler code.

Add prototypes for all of these.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/asm-generic/bug.h | 5 +++--
 include/linux/panic.h     | 3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index 4050b191e1a9..6e794420bd39 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -87,10 +87,12 @@ struct bug_entry {
  *
  * Use the versions with printk format strings to provide better diagnostics.
  */
-#ifndef __WARN_FLAGS
 extern __printf(4, 5)
 void warn_slowpath_fmt(const char *file, const int line, unsigned taint,
 		       const char *fmt, ...);
+extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
+
+#ifndef __WARN_FLAGS
 #define __WARN()		__WARN_printf(TAINT_WARN, NULL)
 #define __WARN_printf(taint, arg...) do {				\
 		instrumentation_begin();				\
@@ -98,7 +100,6 @@ void warn_slowpath_fmt(const char *file, const int line, unsigned taint,
 		instrumentation_end();					\
 	} while (0)
 #else
-extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
 #define __WARN()		__WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
 #define __WARN_printf(taint, arg...) do {				\
 		instrumentation_begin();				\
diff --git a/include/linux/panic.h b/include/linux/panic.h
index 979b776e3bcb..6717b15e798c 100644
--- a/include/linux/panic.h
+++ b/include/linux/panic.h
@@ -32,6 +32,9 @@ extern int sysctl_panic_on_stackoverflow;
 
 extern bool crash_kexec_post_notifiers;
 
+extern void __stack_chk_fail(void);
+void abort(void);
+
 /*
  * panic_cpu is used for synchronizing panic() and crash_kexec() execution. It
  * holds a CPU number which is executing panic() currently. A value of
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 09/14] kunit: include debugfs header file
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (7 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 08/14] panic: make function declarations visible Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-18  3:54   ` David Gow
  2023-05-17 13:10 ` [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype Arnd Bergmann
                   ` (4 subsequent siblings)
  13 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

An extra #include statement is needed to ensure the prototypes
for debugfs interfaces are visible, avoiding this warning:

lib/kunit/debugfs.c:28:6: error: no previous prototype for 'kunit_debugfs_cleanup' [-Werror=missing-prototypes]
lib/kunit/debugfs.c:33:6: error: no previous prototype for 'kunit_debugfs_init' [-Werror=missing-prototypes]
lib/kunit/debugfs.c:102:6: error: no previous prototype for 'kunit_debugfs_create_suite' [-Werror=missing-prototypes]
lib/kunit/debugfs.c:118:6: error: no previous prototype for 'kunit_debugfs_destroy_suite' [-Werror=missing-prototypes]

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 lib/kunit/debugfs.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/kunit/debugfs.c b/lib/kunit/debugfs.c
index b08bb1fba106..22c5c496a68f 100644
--- a/lib/kunit/debugfs.c
+++ b/lib/kunit/debugfs.c
@@ -10,6 +10,7 @@
 #include <kunit/test.h>
 
 #include "string-stream.h"
+#include "debugfs.h"
 
 #define KUNIT_DEBUGFS_ROOT             "kunit"
 #define KUNIT_DEBUGFS_RESULTS          "results"
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (8 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 09/14] kunit: include debugfs header file Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-05-17 13:48   ` Rafael J. Wysocki
  2023-05-17 13:10 ` [PATCH 11/14] init: consolidate prototypes in linux/init.h Arnd Bergmann
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

The arch_resume_nosmt() has a __weak definition, plus an x86
specific override, but no prototype that ensures the two have
the same arguments. This causes a W=1 warning:

arch/x86/power/hibernate.c:189:5: error: no previous prototype for 'arch_resume_nosmt' [-Werror=missing-prototypes]

Add the prototype in linux/suspend.h, which is included in
both places.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/suspend.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index f16653f7be32..bc911fecb8e8 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -472,6 +472,8 @@ static inline int hibernate_quiet_exec(int (*func)(void *data), void *data) {
 }
 #endif /* CONFIG_HIBERNATION */
 
+int arch_resume_nosmt(void);
+
 #ifdef CONFIG_HIBERNATION_SNAPSHOT_DEV
 int is_hibernate_resume_dev(dev_t dev);
 #else
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 11/14] init: consolidate prototypes in linux/init.h
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (9 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype Arnd Bergmann
@ 2023-05-17 13:10 ` Arnd Bergmann
  2023-06-22 15:02   ` Palmer Dabbelt
  2023-05-17 13:11 ` [PATCH 12/14] init: move cifs_root_data() prototype into linux/mount.h Arnd Bergmann
                   ` (2 subsequent siblings)
  13 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:10 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

The init/main.c file contains some extern declarations for functions
defined in architecture code, and it defines some other functions that
are called from architecture code with a custom prototype. Both of those
result in warnings with 'make W=1':

init/calibrate.c:261:37: error: no previous prototype for 'calibrate_delay_is_known' [-Werror=missing-prototypes]
init/main.c:790:20: error: no previous prototype for 'mem_encrypt_init' [-Werror=missing-prototypes]
init/main.c:792:20: error: no previous prototype for 'poking_init' [-Werror=missing-prototypes]
arch/arm64/kernel/irq.c:122:13: error: no previous prototype for 'init_IRQ' [-Werror=missing-prototypes]
arch/arm64/kernel/time.c:55:13: error: no previous prototype for 'time_init' [-Werror=missing-prototypes]
arch/x86/kernel/process.c:935:13: error: no previous prototype for 'arch_post_acpi_subsys_init' [-Werror=missing-prototypes]
init/calibrate.c:261:37: error: no previous prototype for 'calibrate_delay_is_known' [-Werror=missing-prototypes]
kernel/fork.c:991:20: error: no previous prototype for 'arch_task_cache_init' [-Werror=missing-prototypes]

Add prototypes for all of these in include/linux/init.h or another
appropriate header, and remove the duplicate declarations from
architecture specific code.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/include/asm/irq.h          |  1 -
 arch/microblaze/include/asm/setup.h |  2 --
 arch/mips/include/asm/irq.h         |  1 -
 arch/parisc/kernel/smp.c            |  1 -
 arch/powerpc/include/asm/irq.h      |  1 -
 arch/riscv/include/asm/irq.h        |  2 --
 arch/riscv/include/asm/timex.h      |  2 --
 arch/s390/kernel/entry.h            |  2 --
 arch/sh/include/asm/irq.h           |  1 -
 arch/sh/include/asm/rtc.h           |  2 --
 arch/sparc/include/asm/irq_32.h     |  1 -
 arch/sparc/include/asm/irq_64.h     |  1 -
 arch/sparc/include/asm/timer_64.h   |  1 -
 arch/sparc/kernel/kernel.h          |  4 ----
 arch/x86/include/asm/irq.h          |  2 --
 arch/x86/include/asm/mem_encrypt.h  |  3 ---
 arch/x86/include/asm/time.h         |  1 -
 arch/x86/include/asm/tsc.h          |  1 -
 include/linux/acpi.h                |  3 ++-
 include/linux/delay.h               |  1 +
 include/linux/init.h                | 20 ++++++++++++++++++++
 init/main.c                         | 18 ------------------
 22 files changed, 23 insertions(+), 48 deletions(-)

diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h
index f62fa9f36192..ea0fdf83c397 100644
--- a/arch/arm/include/asm/irq.h
+++ b/arch/arm/include/asm/irq.h
@@ -23,7 +23,6 @@
 #endif
 
 #ifndef __ASSEMBLY__
-void init_IRQ(void);
 
 #ifdef CONFIG_SMP
 #include <linux/cpumask.h>
diff --git a/arch/microblaze/include/asm/setup.h b/arch/microblaze/include/asm/setup.h
index a06cc1f97aa9..3657f5e78a3d 100644
--- a/arch/microblaze/include/asm/setup.h
+++ b/arch/microblaze/include/asm/setup.h
@@ -16,8 +16,6 @@ extern char *klimit;
 
 extern void mmu_reset(void);
 
-void time_init(void);
-void init_IRQ(void);
 void machine_early_init(const char *cmdline, unsigned int ram,
 		unsigned int fdt, unsigned int msr, unsigned int tlb0,
 		unsigned int tlb1);
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h
index 44f9824c1d8c..75abfa834ab7 100644
--- a/arch/mips/include/asm/irq.h
+++ b/arch/mips/include/asm/irq.h
@@ -19,7 +19,6 @@
 #define IRQ_STACK_SIZE			THREAD_SIZE
 #define IRQ_STACK_START			(IRQ_STACK_SIZE - 16)
 
-extern void __init init_IRQ(void);
 extern void *irq_stack[NR_CPUS];
 
 /*
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index b7fc859fa87d..83348125b524 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -271,7 +271,6 @@ void arch_send_call_function_single_ipi(int cpu)
 static void
 smp_cpu_init(int cpunum)
 {
-	extern void init_IRQ(void);    /* arch/parisc/kernel/irq.c */
 	extern void start_cpu_itimer(void); /* arch/parisc/kernel/time.c */
 
 	/* Set modes and Enable floating point coprocessor */
diff --git a/arch/powerpc/include/asm/irq.h b/arch/powerpc/include/asm/irq.h
index deadd2149426..94dffa1dd223 100644
--- a/arch/powerpc/include/asm/irq.h
+++ b/arch/powerpc/include/asm/irq.h
@@ -50,7 +50,6 @@ extern void *hardirq_ctx[NR_CPUS];
 extern void *softirq_ctx[NR_CPUS];
 
 void __do_IRQ(struct pt_regs *regs);
-extern void __init init_IRQ(void);
 
 int irq_choose_cpu(const struct cpumask *mask);
 
diff --git a/arch/riscv/include/asm/irq.h b/arch/riscv/include/asm/irq.h
index 43b9ebfbd943..8e10a94430a2 100644
--- a/arch/riscv/include/asm/irq.h
+++ b/arch/riscv/include/asm/irq.h
@@ -16,6 +16,4 @@ void riscv_set_intc_hwnode_fn(struct fwnode_handle *(*fn)(void));
 
 struct fwnode_handle *riscv_get_intc_hwnode(void);
 
-extern void __init init_IRQ(void);
-
 #endif /* _ASM_RISCV_IRQ_H */
diff --git a/arch/riscv/include/asm/timex.h b/arch/riscv/include/asm/timex.h
index d6a7428f6248..a06697846e69 100644
--- a/arch/riscv/include/asm/timex.h
+++ b/arch/riscv/include/asm/timex.h
@@ -88,6 +88,4 @@ static inline int read_current_timer(unsigned long *timer_val)
 	return 0;
 }
 
-extern void time_init(void);
-
 #endif /* _ASM_RISCV_TIMEX_H */
diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h
index 34674e38826b..9f41853f36b9 100644
--- a/arch/s390/kernel/entry.h
+++ b/arch/s390/kernel/entry.h
@@ -34,14 +34,12 @@ void kernel_stack_overflow(struct pt_regs * regs);
 void handle_signal32(struct ksignal *ksig, sigset_t *oldset,
 		     struct pt_regs *regs);
 
-void __init init_IRQ(void);
 void do_io_irq(struct pt_regs *regs);
 void do_ext_irq(struct pt_regs *regs);
 void do_restart(void *arg);
 void __init startup_init(void);
 void die(struct pt_regs *regs, const char *str);
 int setup_profiling_timer(unsigned int multiplier);
-void __init time_init(void);
 unsigned long prepare_ftrace_return(unsigned long parent, unsigned long sp, unsigned long ip);
 
 struct s390_mmap_arg_struct;
diff --git a/arch/sh/include/asm/irq.h b/arch/sh/include/asm/irq.h
index 1c4923502fd4..0f384b1f45ca 100644
--- a/arch/sh/include/asm/irq.h
+++ b/arch/sh/include/asm/irq.h
@@ -22,7 +22,6 @@ extern unsigned short *irq_mask_register;
 /*
  * PINT IRQs
  */
-void init_IRQ_pint(void);
 void make_imask_irq(unsigned int irq);
 
 static inline int generic_irq_demux(int irq)
diff --git a/arch/sh/include/asm/rtc.h b/arch/sh/include/asm/rtc.h
index 2d333ad60810..40b0899783d7 100644
--- a/arch/sh/include/asm/rtc.h
+++ b/arch/sh/include/asm/rtc.h
@@ -2,8 +2,6 @@
 #ifndef _ASM_RTC_H
 #define _ASM_RTC_H
 
-void time_init(void);
-
 #define RTC_CAP_4_DIGIT_YEAR	(1 << 0)
 
 struct sh_rtc_platform_data {
diff --git a/arch/sparc/include/asm/irq_32.h b/arch/sparc/include/asm/irq_32.h
index 43ec2609b811..6ee48321cbc2 100644
--- a/arch/sparc/include/asm/irq_32.h
+++ b/arch/sparc/include/asm/irq_32.h
@@ -17,7 +17,6 @@
 
 #define irq_canonicalize(irq)	(irq)
 
-void __init init_IRQ(void);
 void __init sun4d_init_sbi_irq(void);
 
 #define NO_IRQ		0xffffffff
diff --git a/arch/sparc/include/asm/irq_64.h b/arch/sparc/include/asm/irq_64.h
index 154df2cf19f4..b436029f1ced 100644
--- a/arch/sparc/include/asm/irq_64.h
+++ b/arch/sparc/include/asm/irq_64.h
@@ -61,7 +61,6 @@ void sun4u_destroy_msi(unsigned int irq);
 unsigned int irq_alloc(unsigned int dev_handle, unsigned int dev_ino);
 void irq_free(unsigned int irq);
 
-void __init init_IRQ(void);
 void fixup_irqs(void);
 
 static inline void set_softint(unsigned long bits)
diff --git a/arch/sparc/include/asm/timer_64.h b/arch/sparc/include/asm/timer_64.h
index dcfad4613e18..ffff52c8b760 100644
--- a/arch/sparc/include/asm/timer_64.h
+++ b/arch/sparc/include/asm/timer_64.h
@@ -34,7 +34,6 @@ extern struct sparc64_tick_ops *tick_ops;
 
 unsigned long sparc64_get_clock_tick(unsigned int cpu);
 void setup_sparc64_timer(void);
-void __init time_init(void);
 
 #define TICK_PRIV_BIT		BIT(63)
 #define TICKCMP_IRQ_BIT		BIT(63)
diff --git a/arch/sparc/kernel/kernel.h b/arch/sparc/kernel/kernel.h
index 9cd09a3ef35f..970ef8dec86e 100644
--- a/arch/sparc/kernel/kernel.h
+++ b/arch/sparc/kernel/kernel.h
@@ -62,9 +62,6 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs);
 void do_signal32(struct pt_regs * regs);
 asmlinkage int do_sys32_sigstack(u32 u_ssptr, u32 u_ossptr, unsigned long sp);
 
-/* time_64.c */
-void __init time_init_early(void);
-
 /* compat_audit.c */
 extern unsigned int sparc32_dir_class[];
 extern unsigned int sparc32_chattr_class[];
@@ -91,7 +88,6 @@ extern int static_irq_count;
 extern spinlock_t irq_action_lock;
 
 void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs);
-void init_IRQ(void);
 
 /* sun4m_irq.c */
 void sun4m_init_IRQ(void);
diff --git a/arch/x86/include/asm/irq.h b/arch/x86/include/asm/irq.h
index 768aa234cbb4..29e083b92813 100644
--- a/arch/x86/include/asm/irq.h
+++ b/arch/x86/include/asm/irq.h
@@ -40,8 +40,6 @@ extern void __handle_irq(struct irq_desc *desc, struct pt_regs *regs);
 
 extern void init_ISA_irqs(void);
 
-extern void __init init_IRQ(void);
-
 #ifdef CONFIG_X86_LOCAL_APIC
 void arch_trigger_cpumask_backtrace(const struct cpumask *mask,
 				    bool exclude_self);
diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h
index b7126701574c..1c22c86d13e6 100644
--- a/arch/x86/include/asm/mem_encrypt.h
+++ b/arch/x86/include/asm/mem_encrypt.h
@@ -87,9 +87,6 @@ static inline void mem_encrypt_free_decrypted_mem(void) { }
 
 #endif	/* CONFIG_AMD_MEM_ENCRYPT */
 
-/* Architecture __weak replacement functions */
-void __init mem_encrypt_init(void);
-
 void add_encrypt_protection_map(void);
 
 /*
diff --git a/arch/x86/include/asm/time.h b/arch/x86/include/asm/time.h
index a53961c64a56..f360104ed172 100644
--- a/arch/x86/include/asm/time.h
+++ b/arch/x86/include/asm/time.h
@@ -6,7 +6,6 @@
 #include <asm/mc146818rtc.h>
 
 extern void hpet_time_init(void);
-extern void time_init(void);
 extern bool pit_timer_init(void);
 extern bool tsc_clocksource_watchdog_disabled(void);
 
diff --git a/arch/x86/include/asm/tsc.h b/arch/x86/include/asm/tsc.h
index fbdc3d951494..1992ef5e41a9 100644
--- a/arch/x86/include/asm/tsc.h
+++ b/arch/x86/include/asm/tsc.h
@@ -32,7 +32,6 @@ extern struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns);
 
 extern void tsc_early_init(void);
 extern void tsc_init(void);
-extern unsigned long calibrate_delay_is_known(void);
 extern void mark_tsc_unstable(char *reason);
 extern int unsynchronized_tsc(void);
 extern int check_tsc_unstable(void);
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 7b71dd74baeb..f4c2a87d02c1 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -712,7 +712,6 @@ int acpi_match_platform_list(const struct acpi_platform_list *plat);
 
 extern void acpi_early_init(void);
 extern void acpi_subsystem_init(void);
-extern void arch_post_acpi_subsys_init(void);
 
 extern int acpi_nvs_register(__u64 start, __u64 size);
 
@@ -1084,6 +1083,8 @@ static inline bool acpi_sleep_state_supported(u8 sleep_state)
 
 #endif	/* !CONFIG_ACPI */
 
+extern void arch_post_acpi_subsys_init(void);
+
 #ifdef CONFIG_ACPI_HOTPLUG_IOAPIC
 int acpi_ioapic_add(acpi_handle root);
 #else
diff --git a/include/linux/delay.h b/include/linux/delay.h
index 039e7e0c7378..ff9cda975e30 100644
--- a/include/linux/delay.h
+++ b/include/linux/delay.h
@@ -56,6 +56,7 @@ static inline void ndelay(unsigned long x)
 
 extern unsigned long lpj_fine;
 void calibrate_delay(void);
+unsigned long calibrate_delay_is_known(void);
 void __attribute__((weak)) calibration_delay_done(void);
 void msleep(unsigned int msecs);
 unsigned long msleep_interruptible(unsigned int msecs);
diff --git a/include/linux/init.h b/include/linux/init.h
index c5fe6d26f5b1..1200fa99e848 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -152,6 +152,24 @@ extern unsigned int reset_devices;
 void setup_arch(char **);
 void prepare_namespace(void);
 void __init init_rootfs(void);
+
+void init_IRQ(void);
+void time_init(void);
+void mem_encrypt_init(void);
+void poking_init(void);
+void pgtable_cache_init(void);
+
+extern initcall_entry_t __initcall_start[];
+extern initcall_entry_t __initcall0_start[];
+extern initcall_entry_t __initcall1_start[];
+extern initcall_entry_t __initcall2_start[];
+extern initcall_entry_t __initcall3_start[];
+extern initcall_entry_t __initcall4_start[];
+extern initcall_entry_t __initcall5_start[];
+extern initcall_entry_t __initcall6_start[];
+extern initcall_entry_t __initcall7_start[];
+extern initcall_entry_t __initcall_end[];
+
 extern struct file_system_type rootfs_fs_type;
 
 #if defined(CONFIG_STRICT_KERNEL_RWX) || defined(CONFIG_STRICT_MODULE_RWX)
@@ -309,6 +327,8 @@ struct obs_kernel_param {
 	int early;
 };
 
+extern const struct obs_kernel_param __setup_start[], __setup_end[];
+
 /*
  * Only for really core code.  See moduleparam.h for the normal way.
  *
diff --git a/init/main.c b/init/main.c
index af50044deed5..d4400efbef0a 100644
--- a/init/main.c
+++ b/init/main.c
@@ -115,10 +115,6 @@
 
 static int kernel_init(void *);
 
-extern void init_IRQ(void);
-extern void radix_tree_init(void);
-extern void maple_tree_init(void);
-
 /*
  * Debug helper: via this flag we know that we are in 'early bootup code'
  * where only the boot processor is running with IRQ disabled.  This means
@@ -137,7 +133,6 @@ EXPORT_SYMBOL(system_state);
 #define MAX_INIT_ARGS CONFIG_INIT_ENV_ARG_LIMIT
 #define MAX_INIT_ENVS CONFIG_INIT_ENV_ARG_LIMIT
 
-extern void time_init(void);
 /* Default late time init is NULL. archs can override this later. */
 void (*__initdata late_time_init)(void);
 
@@ -196,8 +191,6 @@ static const char *argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
 const char *envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
 static const char *panic_later, *panic_param;
 
-extern const struct obs_kernel_param __setup_start[], __setup_end[];
-
 static bool __init obsolete_checksetup(char *line)
 {
 	const struct obs_kernel_param *p;
@@ -1263,17 +1256,6 @@ int __init_or_module do_one_initcall(initcall_t fn)
 }
 
 
-extern initcall_entry_t __initcall_start[];
-extern initcall_entry_t __initcall0_start[];
-extern initcall_entry_t __initcall1_start[];
-extern initcall_entry_t __initcall2_start[];
-extern initcall_entry_t __initcall3_start[];
-extern initcall_entry_t __initcall4_start[];
-extern initcall_entry_t __initcall5_start[];
-extern initcall_entry_t __initcall6_start[];
-extern initcall_entry_t __initcall7_start[];
-extern initcall_entry_t __initcall_end[];
-
 static initcall_entry_t *initcall_levels[] __initdata = {
 	__initcall0_start,
 	__initcall1_start,
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 12/14] init: move cifs_root_data() prototype into linux/mount.h
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (10 preceding siblings ...)
  2023-05-17 13:10 ` [PATCH 11/14] init: consolidate prototypes in linux/init.h Arnd Bergmann
@ 2023-05-17 13:11 ` Arnd Bergmann
  2023-05-17 13:11 ` [PATCH 13/14] thread_info: move function declarations to linux/thread_info.h Arnd Bergmann
  2023-05-17 13:11 ` [PATCH 14/14] time_namespace: always provide arch_get_vdso_data() prototype for vdso Arnd Bergmann
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:11 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

cifs_root_data() is defined in cifs and called from early init
code, but lacks a global prototype:

fs/cifs/cifsroot.c:83:12: error: no previous prototype for 'cifs_root_data'

Move the declaration from do_mounts.c into an appropriate header.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/mount.h | 2 ++
 init/do_mounts.c      | 2 --
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/mount.h b/include/linux/mount.h
index 1ea326c368f7..f381eb44b24c 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -124,4 +124,6 @@ extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,
 			  struct vfsmount *);
 extern void kern_unmount_array(struct vfsmount *mnt[], unsigned int num);
 
+extern int cifs_root_data(char **dev, char **opts);
+
 #endif /* _LINUX_MOUNT_H */
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 811e94daf0a8..83447c46ad6d 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -489,8 +489,6 @@ static int __init mount_nfs_root(void)
 
 #ifdef CONFIG_CIFS_ROOT
 
-extern int cifs_root_data(char **dev, char **opts);
-
 #define CIFSROOT_TIMEOUT_MIN	5
 #define CIFSROOT_TIMEOUT_MAX	30
 #define CIFSROOT_RETRY_MAX	5
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 13/14] thread_info: move function declarations to linux/thread_info.h
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (11 preceding siblings ...)
  2023-05-17 13:11 ` [PATCH 12/14] init: move cifs_root_data() prototype into linux/mount.h Arnd Bergmann
@ 2023-05-17 13:11 ` Arnd Bergmann
  2023-05-24 18:48   ` Catalin Marinas
  2023-05-17 13:11 ` [PATCH 14/14] time_namespace: always provide arch_get_vdso_data() prototype for vdso Arnd Bergmann
  13 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:11 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

There are a few __weak functions in kernel/fork.c, which architectures
can override. If there is no prototype, the compiler warns about them:

kernel/fork.c:164:13: error: no previous prototype for 'arch_release_task_struct' [-Werror=missing-prototypes]
kernel/fork.c:991:20: error: no previous prototype for 'arch_task_cache_init' [-Werror=missing-prototypes]
kernel/fork.c:1086:12: error: no previous prototype for 'arch_dup_task_struct' [-Werror=missing-prototypes]

There are already prototypes in a number of architecture specific headers
that have addressed those warnings before, but it's much better to have
these in a single place so the warning no longer shows up anywhere.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm64/include/asm/thread_info.h | 4 ----
 arch/s390/include/asm/thread_info.h  | 3 ---
 arch/sh/include/asm/thread_info.h    | 3 ---
 arch/x86/include/asm/thread_info.h   | 3 ---
 include/linux/thread_info.h          | 5 +++++
 5 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
index 848739c15de8..553d1bc559c6 100644
--- a/arch/arm64/include/asm/thread_info.h
+++ b/arch/arm64/include/asm/thread_info.h
@@ -55,10 +55,6 @@ struct thread_info {
 void arch_setup_new_exec(void);
 #define arch_setup_new_exec     arch_setup_new_exec
 
-void arch_release_task_struct(struct task_struct *tsk);
-int arch_dup_task_struct(struct task_struct *dst,
-				struct task_struct *src);
-
 #endif
 
 #define TIF_SIGPENDING		0	/* signal pending */
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h
index c7c97921ed8d..a674c7d25da5 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -52,9 +52,6 @@ struct thread_info {
 
 struct task_struct;
 
-void arch_release_task_struct(struct task_struct *tsk);
-int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
-
 void arch_setup_new_exec(void);
 #define arch_setup_new_exec arch_setup_new_exec
 
diff --git a/arch/sh/include/asm/thread_info.h b/arch/sh/include/asm/thread_info.h
index 1400fbb8b423..9f19a682d315 100644
--- a/arch/sh/include/asm/thread_info.h
+++ b/arch/sh/include/asm/thread_info.h
@@ -84,9 +84,6 @@ static inline struct thread_info *current_thread_info(void)
 
 #define THREAD_SIZE_ORDER	(THREAD_SHIFT - PAGE_SHIFT)
 
-extern void arch_task_cache_init(void);
-extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
-extern void arch_release_task_struct(struct task_struct *tsk);
 extern void init_thread_xstate(void);
 
 #endif /* __ASSEMBLY__ */
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h
index f1cccba52eb9..d63b02940747 100644
--- a/arch/x86/include/asm/thread_info.h
+++ b/arch/x86/include/asm/thread_info.h
@@ -232,9 +232,6 @@ static inline int arch_within_stack_frames(const void * const stack,
 			   current_thread_info()->status & TS_COMPAT)
 #endif
 
-extern void arch_task_cache_init(void);
-extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
-extern void arch_release_task_struct(struct task_struct *tsk);
 extern void arch_setup_new_exec(void);
 #define arch_setup_new_exec arch_setup_new_exec
 #endif	/* !__ASSEMBLY__ */
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
index c02646884fa8..9ea0b28068f4 100644
--- a/include/linux/thread_info.h
+++ b/include/linux/thread_info.h
@@ -256,6 +256,11 @@ check_copy_size(const void *addr, size_t bytes, bool is_source)
 static inline void arch_setup_new_exec(void) { }
 #endif
 
+void arch_task_cache_init(void); /* for CONFIG_SH */
+void arch_release_task_struct(struct task_struct *tsk);
+int arch_dup_task_struct(struct task_struct *dst,
+				struct task_struct *src);
+
 #endif	/* __KERNEL__ */
 
 #endif /* _LINUX_THREAD_INFO_H */
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 14/14] time_namespace: always provide arch_get_vdso_data() prototype for vdso
  2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
                   ` (12 preceding siblings ...)
  2023-05-17 13:11 ` [PATCH 13/14] thread_info: move function declarations to linux/thread_info.h Arnd Bergmann
@ 2023-05-17 13:11 ` Arnd Bergmann
  13 siblings, 0 replies; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 13:11 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	linuxppc-dev

From: Arnd Bergmann <arnd@arndb.de>

The arch_get_vdso_data() function is defined separately on each architecture,
but only called when CONFIG_TIME_NS is set. If the definition is a global
function, this causes a W=1 warning without TIME_NS:

arch/x86/entry/vdso/vma.c:35:19: error: no previous prototype for 'arch_get_vdso_data' [-Werror=missing-prototypes]

Move the prototype out of the #ifdef block to reliably turn off that
warning.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/time_namespace.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/time_namespace.h b/include/linux/time_namespace.h
index bb9d3f5542f8..03d9c5ac01d1 100644
--- a/include/linux/time_namespace.h
+++ b/include/linux/time_namespace.h
@@ -44,7 +44,6 @@ struct time_namespace *copy_time_ns(unsigned long flags,
 				    struct time_namespace *old_ns);
 void free_time_ns(struct time_namespace *ns);
 void timens_on_fork(struct nsproxy *nsproxy, struct task_struct *tsk);
-struct vdso_data *arch_get_vdso_data(void *vvar_page);
 struct page *find_timens_vvar_page(struct vm_area_struct *vma);
 
 static inline void put_time_ns(struct time_namespace *ns)
@@ -163,4 +162,6 @@ static inline ktime_t timens_ktime_to_host(clockid_t clockid, ktime_t tim)
 }
 #endif
 
+struct vdso_data *arch_get_vdso_data(void *vvar_page);
+
 #endif /* _LINUX_TIMENS_H */
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype
  2023-05-17 13:10 ` [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype Arnd Bergmann
@ 2023-05-17 13:48   ` Rafael J. Wysocki
  2023-05-17 14:52     ` Arnd Bergmann
  0 siblings, 1 reply; 24+ messages in thread
From: Rafael J. Wysocki @ 2023-05-17 13:48 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	Andrew Morton, linuxppc-dev

On Wed, May 17, 2023 at 3:12 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> The arch_resume_nosmt() has a __weak definition, plus an x86
> specific override, but no prototype that ensures the two have
> the same arguments. This causes a W=1 warning:
>
> arch/x86/power/hibernate.c:189:5: error: no previous prototype for 'arch_resume_nosmt' [-Werror=missing-prototypes]
>
> Add the prototype in linux/suspend.h, which is included in
> both places.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Do you want me to pick this up?

If not

Acked-by: Rafael J. Wysocki <rafael@kernel.org>

> ---
>  include/linux/suspend.h | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/include/linux/suspend.h b/include/linux/suspend.h
> index f16653f7be32..bc911fecb8e8 100644
> --- a/include/linux/suspend.h
> +++ b/include/linux/suspend.h
> @@ -472,6 +472,8 @@ static inline int hibernate_quiet_exec(int (*func)(void *data), void *data) {
>  }
>  #endif /* CONFIG_HIBERNATION */
>
> +int arch_resume_nosmt(void);
> +
>  #ifdef CONFIG_HIBERNATION_SNAPSHOT_DEV
>  int is_hibernate_resume_dev(dev_t dev);
>  #else
> --
> 2.39.2
>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 4/14] audit: avoid missing-prototype warnings
  2023-05-17 13:10 ` [PATCH 04/14] audit: avoid missing-prototype warnings Arnd Bergmann
@ 2023-05-17 14:33   ` Paul Moore
  2023-05-17 14:51     ` Arnd Bergmann
  0 siblings, 1 reply; 24+ messages in thread
From: Paul Moore @ 2023-05-17 14:33 UTC (permalink / raw)
  To: Arnd Bergmann, Andrew Morton
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390, linux-sh,
	Helge Deller, x86, Russell King, Ingo Molnar, Waiman Long,
	Boqun Feng, Arnd Bergmann, linux-pm, Heiko Carstens, Dennis Zhou,
	Thomas Gleixner, linux-arm-kernel, kunit-dev, Michal Simek,
	Thomas Bogendoerfer, linux-parisc, linux-kernel, Eric Paris,
	audit

On May 17, 2023 Arnd Bergmann <arnd@kernel.org> wrote:
> 
> Building with 'make W=1' reveals two function definitions without
> a previous prototype in the audit code:
> 
> lib/compat_audit.c:32:5: error: no previous prototype for 'audit_classify_compat_syscall' [-Werror=missing-prototypes]
> kernel/audit.c:1813:14: error: no previous prototype for 'audit_serial' [-Werror=missing-prototypes]
> 
> The first one needs a declaration from linux/audit.h but cannot
> include that header without causing conflicting (compat) syscall number
> definitions, so move the it into linux/audit_arch.h.
> 
> The second one is declared conditionally based on CONFIG_AUDITSYSCALL
> but needed as a local function even when that option is disabled, so
> move the declaration out of the #ifdef block.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  include/linux/audit.h      | 2 --
>  include/linux/audit_arch.h | 2 ++
>  kernel/audit.h             | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/include/linux/audit.h b/include/linux/audit.h
> index 31086a72e32a..6a3a9e122bb5 100644
> --- a/include/linux/audit.h
> +++ b/include/linux/audit.h
> @@ -130,8 +130,6 @@ extern unsigned compat_dir_class[];
>  extern unsigned compat_chattr_class[];
>  extern unsigned compat_signal_class[];
>  
> -extern int audit_classify_compat_syscall(int abi, unsigned syscall);
> -
>  /* audit_names->type values */
>  #define	AUDIT_TYPE_UNKNOWN	0	/* we don't know yet */
>  #define	AUDIT_TYPE_NORMAL	1	/* a "normal" audit record */
> diff --git a/include/linux/audit_arch.h b/include/linux/audit_arch.h
> index 8fdb1afe251a..0e34d673ef17 100644
> --- a/include/linux/audit_arch.h
> +++ b/include/linux/audit_arch.h
> @@ -21,4 +21,6 @@ enum auditsc_class_t {
>  	AUDITSC_NVALS /* count */
>  };
>  
> +extern int audit_classify_compat_syscall(int abi, unsigned syscall);
> +
>  #endif
> diff --git a/kernel/audit.h b/kernel/audit.h
> index c57b008b9914..94738bce40b2 100644
> --- a/kernel/audit.h
> +++ b/kernel/audit.h
> @@ -259,8 +259,8 @@ extern struct tty_struct *audit_get_tty(void);
>  extern void audit_put_tty(struct tty_struct *tty);
>  
>  /* audit watch/mark/tree functions */
> -#ifdef CONFIG_AUDITSYSCALL
>  extern unsigned int audit_serial(void);
> +#ifdef CONFIG_AUDITSYSCALL
>  extern int auditsc_get_stamp(struct audit_context *ctx,
>  			      struct timespec64 *t, unsigned int *serial);

We probably should move the audit_serial() and auditsc_get_stamp()
away from the watch/mark/tree functions, but that isn't your problem.

Anyway, this looks okay to me; do you have a problem if I merge this
via the audit/next branch or were you hoping to have this go in
through a different tree?

--
paul-moore.com

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 4/14] audit: avoid missing-prototype warnings
  2023-05-17 14:33   ` [PATCH 4/14] " Paul Moore
@ 2023-05-17 14:51     ` Arnd Bergmann
  2023-05-17 15:51       ` Paul Moore
  0 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 14:51 UTC (permalink / raw)
  To: Paul Moore, Arnd Bergmann, Andrew Morton
  Cc: linux-kselftest, Rafael J . Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390, linux-sh,
	Helge Deller, x86, Russell King, Ingo Molnar, Waiman Long,
	Heiko Carstens, linux-pm, Boqun Feng, Dennis Zhou,
	Thomas Gleixner, linux-arm-kernel, kunit-dev, Michal Simek,
	Thomas Bogendoerfer, linux-parisc, linux-kernel, Eric Paris,
	audit, Palmer Dabbelt

On Wed, May 17, 2023, at 16:33, Paul Moore wrote:
> On May 17, 2023 Arnd Bergmann <arnd@kernel.org> wrote:

> We probably should move the audit_serial() and auditsc_get_stamp()
> away from the watch/mark/tree functions, but that isn't your problem.
>
> Anyway, this looks okay to me; do you have a problem if I merge this
> via the audit/next branch or were you hoping to have this go in
> through a different tree?

Merging it through your tree is probably best, Andrew can either
pick the ones that nobody else took, or I can resend the rest.


    Arnd

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype
  2023-05-17 13:48   ` Rafael J. Wysocki
@ 2023-05-17 14:52     ` Arnd Bergmann
  2023-05-24 17:33       ` Rafael J. Wysocki
  0 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2023-05-17 14:52 UTC (permalink / raw)
  To: Rafael J . Wysocki, Arnd Bergmann
  Cc: linux-kselftest, linux-sh, Peter Zijlstra, Catalin Marinas,
	linux-mips, linux-mm, Pavel Machek, Christoph Lameter,
	Will Deacon, linux-riscv, linux-s390, Paul Moore, Helge Deller,
	x86, Russell King, Ingo Molnar, Waiman Long, Boqun Feng, linux-pm,
	Heiko Carstens, Dennis Zhou, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	Andrew Morton, linuxppc-dev

On Wed, May 17, 2023, at 15:48, Rafael J. Wysocki wrote:
> On Wed, May 17, 2023 at 3:12 PM Arnd Bergmann <arnd@kernel.org> wrote:
>>
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> The arch_resume_nosmt() has a __weak definition, plus an x86
>> specific override, but no prototype that ensures the two have
>> the same arguments. This causes a W=1 warning:
>>
>> arch/x86/power/hibernate.c:189:5: error: no previous prototype for 'arch_resume_nosmt' [-Werror=missing-prototypes]
>>
>> Add the prototype in linux/suspend.h, which is included in
>> both places.
>>
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> Do you want me to pick this up?

Yes, please do. Thanks,

     Arnd

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 4/14] audit: avoid missing-prototype warnings
  2023-05-17 14:51     ` Arnd Bergmann
@ 2023-05-17 15:51       ` Paul Moore
  0 siblings, 0 replies; 24+ messages in thread
From: Paul Moore @ 2023-05-17 15:51 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-kselftest, Rafael J . Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390, linux-sh,
	Helge Deller, x86, Russell King, Ingo Molnar, Dennis Zhou,
	Boqun Feng, linux-pm, Heiko Carstens, Waiman Long,
	Thomas Gleixner, linux-arm-kernel, kunit-dev, Arnd Bergmann,
	Michal Simek, Thomas Bogendoerfer, linux-parisc, linux-kernel,
	Eric Paris, audit, Palmer Dabbelt, Tejun Heo, Andrew Morton,
	linuxppc-dev

On Wed, May 17, 2023 at 10:51 AM Arnd Bergmann <arnd@arndb.de> wrote:
> On Wed, May 17, 2023, at 16:33, Paul Moore wrote:
> > On May 17, 2023 Arnd Bergmann <arnd@kernel.org> wrote:
>
> > We probably should move the audit_serial() and auditsc_get_stamp()
> > away from the watch/mark/tree functions, but that isn't your problem.
> >
> > Anyway, this looks okay to me; do you have a problem if I merge this
> > via the audit/next branch or were you hoping to have this go in
> > through a different tree?
>
> Merging it through your tree is probably best, Andrew can either
> pick the ones that nobody else took, or I can resend the rest.

Easy enough, merged to audit/next, thanks.

-- 
paul-moore.com

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 09/14] kunit: include debugfs header file
  2023-05-17 13:10 ` [PATCH 09/14] kunit: include debugfs header file Arnd Bergmann
@ 2023-05-18  3:54   ` David Gow
  0 siblings, 0 replies; 24+ messages in thread
From: David Gow @ 2023-05-18  3:54 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann, linux-pm,
	Heiko Carstens, Waiman Long, Thomas Gleixner, linux-arm-kernel,
	kunit-dev, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris, audit, Palmer Dabbelt, Tejun Heo,
	Andrew Morton, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 1753 bytes --]

On Wed, 17 May 2023 at 21:12, Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> An extra #include statement is needed to ensure the prototypes
> for debugfs interfaces are visible, avoiding this warning:
>
> lib/kunit/debugfs.c:28:6: error: no previous prototype for 'kunit_debugfs_cleanup' [-Werror=missing-prototypes]
> lib/kunit/debugfs.c:33:6: error: no previous prototype for 'kunit_debugfs_init' [-Werror=missing-prototypes]
> lib/kunit/debugfs.c:102:6: error: no previous prototype for 'kunit_debugfs_create_suite' [-Werror=missing-prototypes]
> lib/kunit/debugfs.c:118:6: error: no previous prototype for 'kunit_debugfs_destroy_suite' [-Werror=missing-prototypes]
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---

Nice catch, thanks. I'm fine with this going in via -mm, but if you'd
prefer it to go via kselftest/kunit, let me know.

Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David

>  lib/kunit/debugfs.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/kunit/debugfs.c b/lib/kunit/debugfs.c
> index b08bb1fba106..22c5c496a68f 100644
> --- a/lib/kunit/debugfs.c
> +++ b/lib/kunit/debugfs.c
> @@ -10,6 +10,7 @@
>  #include <kunit/test.h>
>
>  #include "string-stream.h"
> +#include "debugfs.h"
>
>  #define KUNIT_DEBUGFS_ROOT             "kunit"
>  #define KUNIT_DEBUGFS_RESULTS          "results"
> --
> 2.39.2
>
> --
> You received this message because you are subscribed to the Google Groups "KUnit Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to kunit-dev+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/kunit-dev/20230517131102.934196-10-arnd%40kernel.org.

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4003 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype
  2023-05-17 14:52     ` Arnd Bergmann
@ 2023-05-24 17:33       ` Rafael J. Wysocki
  0 siblings, 0 replies; 24+ messages in thread
From: Rafael J. Wysocki @ 2023-05-24 17:33 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-kselftest, Rafael J . Wysocki, Peter Zijlstra,
	Catalin Marinas, linux-mips, linux-mm, Pavel Machek,
	Christoph Lameter, Will Deacon, linux-riscv, linux-s390,
	Paul Moore, linux-sh, Helge Deller, x86, Russell King,
	Ingo Molnar, Dennis Zhou, Boqun Feng, linux-pm, Heiko Carstens,
	Waiman Long, Thomas Gleixner, linux-arm-kernel, kunit-dev,
	Arnd Bergmann, Michal Simek, Thomas Bogendoerfer, linux-parisc,
	linux-kernel, Eric Paris <epa 

On Wed, May 17, 2023 at 4:52 PM Arnd Bergmann <arnd@arndb.de> wrote:
>
> On Wed, May 17, 2023, at 15:48, Rafael J. Wysocki wrote:
> > On Wed, May 17, 2023 at 3:12 PM Arnd Bergmann <arnd@kernel.org> wrote:
> >>
> >> From: Arnd Bergmann <arnd@arndb.de>
> >>
> >> The arch_resume_nosmt() has a __weak definition, plus an x86
> >> specific override, but no prototype that ensures the two have
> >> the same arguments. This causes a W=1 warning:
> >>
> >> arch/x86/power/hibernate.c:189:5: error: no previous prototype for 'arch_resume_nosmt' [-Werror=missing-prototypes]
> >>
> >> Add the prototype in linux/suspend.h, which is included in
> >> both places.
> >>
> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> >
> > Do you want me to pick this up?
>
> Yes, please do. Thanks,

Done, thanks!

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 13/14] thread_info: move function declarations to linux/thread_info.h
  2023-05-17 13:11 ` [PATCH 13/14] thread_info: move function declarations to linux/thread_info.h Arnd Bergmann
@ 2023-05-24 18:48   ` Catalin Marinas
  0 siblings, 0 replies; 24+ messages in thread
From: Catalin Marinas @ 2023-05-24 18:48 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-kselftest, Rafael J. Wysocki, Peter Zijlstra, linux-mips,
	linux-mm, Pavel Machek, Christoph Lameter, Will Deacon,
	linux-riscv, linux-s390, Paul Moore, linux-sh, Helge Deller, x86,
	Russell King, Ingo Molnar, Dennis Zhou, Boqun Feng, Arnd Bergmann,
	linux-pm, Heiko Carstens, Waiman Long, Thomas Gleixner,
	linux-arm-kernel, kunit-dev, Michal Simek, Thomas Bogendoerfer,
	linux-parisc, linux-kernel, Eric Paris, audit, Palmer Dabbelt,
	Tejun Heo, Andrew Morton, linuxppc-dev

On Wed, May 17, 2023 at 03:11:01PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> There are a few __weak functions in kernel/fork.c, which architectures
> can override. If there is no prototype, the compiler warns about them:
> 
> kernel/fork.c:164:13: error: no previous prototype for 'arch_release_task_struct' [-Werror=missing-prototypes]
> kernel/fork.c:991:20: error: no previous prototype for 'arch_task_cache_init' [-Werror=missing-prototypes]
> kernel/fork.c:1086:12: error: no previous prototype for 'arch_dup_task_struct' [-Werror=missing-prototypes]
> 
> There are already prototypes in a number of architecture specific headers
> that have addressed those warnings before, but it's much better to have
> these in a single place so the warning no longer shows up anywhere.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

For arm64:

Acked-by: Catalin Marinas <catalin.marinas@arm.com>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 11/14] init: consolidate prototypes in linux/init.h
  2023-05-17 13:10 ` [PATCH 11/14] init: consolidate prototypes in linux/init.h Arnd Bergmann
@ 2023-06-22 15:02   ` Palmer Dabbelt
  0 siblings, 0 replies; 24+ messages in thread
From: Palmer Dabbelt @ 2023-06-22 15:02 UTC (permalink / raw)
  To: arnd
  Cc: linux-kselftest, rafael, peterz, Catalin Marinas, linux-mips,
	linux-mm, pavel, cl, Will Deacon, linux-riscv, linux-s390, paul,
	linux-sh, deller, x86, linux, mingo, dennis, boqun.feng,
	Arnd Bergmann, linux-pm, hca, longman, tglx, linux-arm-kernel,
	kunit-dev, monstr, tsbogend, linux-parisc, linux-kernel, eparis,
	audit, tj, akpm, linuxppc-dev

On Wed, 17 May 2023 06:10:59 PDT (-0700), arnd@kernel.org wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The init/main.c file contains some extern declarations for functions
> defined in architecture code, and it defines some other functions that
> are called from architecture code with a custom prototype. Both of those
> result in warnings with 'make W=1':
>
> init/calibrate.c:261:37: error: no previous prototype for 'calibrate_delay_is_known' [-Werror=missing-prototypes]
> init/main.c:790:20: error: no previous prototype for 'mem_encrypt_init' [-Werror=missing-prototypes]
> init/main.c:792:20: error: no previous prototype for 'poking_init' [-Werror=missing-prototypes]
> arch/arm64/kernel/irq.c:122:13: error: no previous prototype for 'init_IRQ' [-Werror=missing-prototypes]
> arch/arm64/kernel/time.c:55:13: error: no previous prototype for 'time_init' [-Werror=missing-prototypes]
> arch/x86/kernel/process.c:935:13: error: no previous prototype for 'arch_post_acpi_subsys_init' [-Werror=missing-prototypes]
> init/calibrate.c:261:37: error: no previous prototype for 'calibrate_delay_is_known' [-Werror=missing-prototypes]
> kernel/fork.c:991:20: error: no previous prototype for 'arch_task_cache_init' [-Werror=missing-prototypes]
>
> Add prototypes for all of these in include/linux/init.h or another
> appropriate header, and remove the duplicate declarations from
> architecture specific code.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/include/asm/irq.h          |  1 -
>  arch/microblaze/include/asm/setup.h |  2 --
>  arch/mips/include/asm/irq.h         |  1 -
>  arch/parisc/kernel/smp.c            |  1 -
>  arch/powerpc/include/asm/irq.h      |  1 -
>  arch/riscv/include/asm/irq.h        |  2 --
>  arch/riscv/include/asm/timex.h      |  2 --
>  arch/s390/kernel/entry.h            |  2 --
>  arch/sh/include/asm/irq.h           |  1 -
>  arch/sh/include/asm/rtc.h           |  2 --
>  arch/sparc/include/asm/irq_32.h     |  1 -
>  arch/sparc/include/asm/irq_64.h     |  1 -
>  arch/sparc/include/asm/timer_64.h   |  1 -
>  arch/sparc/kernel/kernel.h          |  4 ----
>  arch/x86/include/asm/irq.h          |  2 --
>  arch/x86/include/asm/mem_encrypt.h  |  3 ---
>  arch/x86/include/asm/time.h         |  1 -
>  arch/x86/include/asm/tsc.h          |  1 -
>  include/linux/acpi.h                |  3 ++-
>  include/linux/delay.h               |  1 +
>  include/linux/init.h                | 20 ++++++++++++++++++++
>  init/main.c                         | 18 ------------------
>  22 files changed, 23 insertions(+), 48 deletions(-)

...

> diff --git a/arch/riscv/include/asm/irq.h b/arch/riscv/include/asm/irq.h
> index 43b9ebfbd943..8e10a94430a2 100644
> --- a/arch/riscv/include/asm/irq.h
> +++ b/arch/riscv/include/asm/irq.h
> @@ -16,6 +16,4 @@ void riscv_set_intc_hwnode_fn(struct fwnode_handle *(*fn)(void));
>
>  struct fwnode_handle *riscv_get_intc_hwnode(void);
>
> -extern void __init init_IRQ(void);
> -
>  #endif /* _ASM_RISCV_IRQ_H */
> diff --git a/arch/riscv/include/asm/timex.h b/arch/riscv/include/asm/timex.h
> index d6a7428f6248..a06697846e69 100644
> --- a/arch/riscv/include/asm/timex.h
> +++ b/arch/riscv/include/asm/timex.h
> @@ -88,6 +88,4 @@ static inline int read_current_timer(unsigned long *timer_val)
>  	return 0;
>  }
>
> -extern void time_init(void);
> -
>  #endif /* _ASM_RISCV_TIMEX_H */

Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com> # RISC-V
Acked-by: Palmer Dabbelt <palmer@rivosinc.com> # RISC-V

Thanks!



^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2023-06-22 15:03 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-17 13:10 [PATCH 00/14] mm/init/kernel: missing-prototypes warnings Arnd Bergmann
2023-05-17 13:10 ` [PATCH 01/14] mm: percpu: unhide pcpu_embed_first_chunk prototype Arnd Bergmann
2023-05-17 13:10 ` [PATCH 02/14] mm: page_poison: always declare __kernel_map_pages() function Arnd Bergmann
2023-05-17 13:10 ` [PATCH 03/14] mm: sparse: mark populate_section_memmap() static Arnd Bergmann
2023-05-17 13:10 ` [PATCH 04/14] audit: avoid missing-prototype warnings Arnd Bergmann
2023-05-17 14:33   ` [PATCH 4/14] " Paul Moore
2023-05-17 14:51     ` Arnd Bergmann
2023-05-17 15:51       ` Paul Moore
2023-05-17 13:10 ` [PATCH 05/14] lib: devmem_is_allowed: include linux/io.h Arnd Bergmann
2023-05-17 13:10 ` [PATCH 06/14] locking: add lockevent_read() prototype Arnd Bergmann
2023-05-17 13:10 ` [PATCH 07/14] panic: hide unused global functions Arnd Bergmann
2023-05-17 13:10 ` [PATCH 08/14] panic: make function declarations visible Arnd Bergmann
2023-05-17 13:10 ` [PATCH 09/14] kunit: include debugfs header file Arnd Bergmann
2023-05-18  3:54   ` David Gow
2023-05-17 13:10 ` [PATCH 10/14] suspend: add a arch_resume_nosmt() prototype Arnd Bergmann
2023-05-17 13:48   ` Rafael J. Wysocki
2023-05-17 14:52     ` Arnd Bergmann
2023-05-24 17:33       ` Rafael J. Wysocki
2023-05-17 13:10 ` [PATCH 11/14] init: consolidate prototypes in linux/init.h Arnd Bergmann
2023-06-22 15:02   ` Palmer Dabbelt
2023-05-17 13:11 ` [PATCH 12/14] init: move cifs_root_data() prototype into linux/mount.h Arnd Bergmann
2023-05-17 13:11 ` [PATCH 13/14] thread_info: move function declarations to linux/thread_info.h Arnd Bergmann
2023-05-24 18:48   ` Catalin Marinas
2023-05-17 13:11 ` [PATCH 14/14] time_namespace: always provide arch_get_vdso_data() prototype for vdso Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).