From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2021-04-06 13:32:18
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/kernel/setup-common.c | 1 +
arch/x86/include/asm/desc.h | 1 +
arch/x86/kernel/cpu/mshyperv.c | 1 +
arch/x86/kernel/setup.c | 1 +
drivers/char/ipmi/ipmi_msghandler.c | 1 +
drivers/remoteproc/remoteproc_core.c | 1 +
include/asm-generic/bug.h | 3 +-
include/linux/kernel.h | 84 +-----------------------
include/linux/panic.h | 98 ++++++++++++++++++++++++++++
include/linux/panic_notifier.h | 12 ++++
kernel/hung_task.c | 1 +
kernel/kexec_core.c | 1 +
kernel/panic.c | 1 +
kernel/rcu/tree.c | 2 +
kernel/sysctl.c | 1 +
kernel/trace/trace.c | 1 +
16 files changed, 126 insertions(+), 84 deletions(-)
create mode 100644 include/linux/panic.h
create mode 100644 include/linux/panic_notifier.h
@@ -175,14 +175,6 @@ void __might_fault(const char *file, int line);staticinlinevoidmight_fault(void){}#endif-externstructatomic_notifier_headpanic_notifier_list;-externlong(*panic_blink)(intstate);-__printf(1,2)-voidpanic(constchar*fmt,...)__noreturn__cold;-voidnmi_panic(structpt_regs*regs,constchar*msg);-externvoidoops_enter(void);-externvoidoops_exit(void);-externbooloops_may_print(void);voiddo_exit(longerror_code)__noreturn;voidcomplete_and_exit(structcompletion*,long)__noreturn;
@@ -368,52 +360,8 @@ extern int __kernel_text_address(unsigned long addr);externintkernel_text_address(unsignedlongaddr);externintfunc_ptr_is_kernel_text(void*ptr);-#ifdef CONFIG_SMP-externunsignedintsysctl_oops_all_cpu_backtrace;-#else-#define sysctl_oops_all_cpu_backtrace 0-#endif /* CONFIG_SMP */-externvoidbust_spinlocks(intyes);-externintpanic_timeout;-externunsignedlongpanic_print;-externintpanic_on_oops;-externintpanic_on_unrecovered_nmi;-externintpanic_on_io_nmi;-externintpanic_on_warn;-externunsignedlongpanic_on_taint;-externboolpanic_on_taint_nousertaint;-externintsysctl_panic_on_rcu_stall;-externintsysctl_max_rcu_stall_to_panic;-externintsysctl_panic_on_stackoverflow;--externboolcrash_kexec_post_notifiers;-/*-*panic_cpuisusedforsynchronizingpanic()andcrash_kexec()execution.It-*holdsaCPUnumberwhichisexecutingpanic()currently.Avalueof-*PANIC_CPU_INVALIDmeansnoCPUhasenteredpanic()orcrash_kexec().-*/-externatomic_tpanic_cpu;-#define PANIC_CPU_INVALID -1--/*-*Onlytobeusedbyarchinitcode.Iftheuserover-wrotethedefault-*CONFIG_PANIC_TIMEOUT,honorit.-*/-staticinlinevoidset_arch_panic_timeout(inttimeout,intarch_default_timeout)-{-if(panic_timeout==arch_default_timeout)-panic_timeout=timeout;-}-externconstchar*print_tainted(void);-enumlockdep_ok{-LOCKDEP_STILL_OK,-LOCKDEP_NOW_UNRELIABLE-};-externvoidadd_taint(unsignedflag,enumlockdep_ok);-externinttest_taint(unsignedflag);-externunsignedlongget_taint(void);externintroot_mountflags;externboolearly_boot_irqs_disabled;
@@ -432,36 +380,6 @@ extern enum system_states {SYSTEM_SUSPEND,}system_state;-/* This cannot be an enum because some may be used in assembly source. */-#define TAINT_PROPRIETARY_MODULE 0-#define TAINT_FORCED_MODULE 1-#define TAINT_CPU_OUT_OF_SPEC 2-#define TAINT_FORCED_RMMOD 3-#define TAINT_MACHINE_CHECK 4-#define TAINT_BAD_PAGE 5-#define TAINT_USER 6-#define TAINT_DIE 7-#define TAINT_OVERRIDDEN_ACPI_TABLE 8-#define TAINT_WARN 9-#define TAINT_CRAP 10-#define TAINT_FIRMWARE_WORKAROUND 11-#define TAINT_OOT_MODULE 12-#define TAINT_UNSIGNED_MODULE 13-#define TAINT_SOFTLOCKUP 14-#define TAINT_LIVEPATCH 15-#define TAINT_AUX 16-#define TAINT_RANDSTRUCT 17-#define TAINT_FLAGS_COUNT 18-#define TAINT_FLAGS_MAX ((1UL << TAINT_FLAGS_COUNT) - 1)--structtaint_flag{-charc_true;/* character printed when tainted */-charc_false;/* character printed when not tainted */-boolmodule;/* also show as a per-module taint flag */-};--externconststructtaint_flagtaint_flags[TAINT_FLAGS_COUNT];-externconstcharhex_asc[];#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
On Tue 06 Apr 08:31 CDT 2021, Andy Shevchenko wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
From: Mike Rapoport <rppt@kernel.org> Date: 2021-04-06 14:39:37
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
For the IPMI portion:
Acked-by: Corey Minyard <redacted>
@@ -175,14 +175,6 @@ void __might_fault(const char *file, int line);staticinlinevoidmight_fault(void){}#endif-externstructatomic_notifier_headpanic_notifier_list;-externlong(*panic_blink)(intstate);-__printf(1,2)-voidpanic(constchar*fmt,...)__noreturn__cold;-voidnmi_panic(structpt_regs*regs,constchar*msg);-externvoidoops_enter(void);-externvoidoops_exit(void);-externbooloops_may_print(void);voiddo_exit(longerror_code)__noreturn;voidcomplete_and_exit(structcompletion*,long)__noreturn;
@@ -368,52 +360,8 @@ extern int __kernel_text_address(unsigned long addr);externintkernel_text_address(unsignedlongaddr);externintfunc_ptr_is_kernel_text(void*ptr);-#ifdef CONFIG_SMP-externunsignedintsysctl_oops_all_cpu_backtrace;-#else-#define sysctl_oops_all_cpu_backtrace 0-#endif /* CONFIG_SMP */-externvoidbust_spinlocks(intyes);-externintpanic_timeout;-externunsignedlongpanic_print;-externintpanic_on_oops;-externintpanic_on_unrecovered_nmi;-externintpanic_on_io_nmi;-externintpanic_on_warn;-externunsignedlongpanic_on_taint;-externboolpanic_on_taint_nousertaint;-externintsysctl_panic_on_rcu_stall;-externintsysctl_max_rcu_stall_to_panic;-externintsysctl_panic_on_stackoverflow;--externboolcrash_kexec_post_notifiers;-/*-*panic_cpuisusedforsynchronizingpanic()andcrash_kexec()execution.It-*holdsaCPUnumberwhichisexecutingpanic()currently.Avalueof-*PANIC_CPU_INVALIDmeansnoCPUhasenteredpanic()orcrash_kexec().-*/-externatomic_tpanic_cpu;-#define PANIC_CPU_INVALID -1--/*-*Onlytobeusedbyarchinitcode.Iftheuserover-wrotethedefault-*CONFIG_PANIC_TIMEOUT,honorit.-*/-staticinlinevoidset_arch_panic_timeout(inttimeout,intarch_default_timeout)-{-if(panic_timeout==arch_default_timeout)-panic_timeout=timeout;-}-externconstchar*print_tainted(void);-enumlockdep_ok{-LOCKDEP_STILL_OK,-LOCKDEP_NOW_UNRELIABLE-};-externvoidadd_taint(unsignedflag,enumlockdep_ok);-externinttest_taint(unsignedflag);-externunsignedlongget_taint(void);externintroot_mountflags;externboolearly_boot_irqs_disabled;
@@ -432,36 +380,6 @@ extern enum system_states {SYSTEM_SUSPEND,}system_state;-/* This cannot be an enum because some may be used in assembly source. */-#define TAINT_PROPRIETARY_MODULE 0-#define TAINT_FORCED_MODULE 1-#define TAINT_CPU_OUT_OF_SPEC 2-#define TAINT_FORCED_RMMOD 3-#define TAINT_MACHINE_CHECK 4-#define TAINT_BAD_PAGE 5-#define TAINT_USER 6-#define TAINT_DIE 7-#define TAINT_OVERRIDDEN_ACPI_TABLE 8-#define TAINT_WARN 9-#define TAINT_CRAP 10-#define TAINT_FIRMWARE_WORKAROUND 11-#define TAINT_OOT_MODULE 12-#define TAINT_UNSIGNED_MODULE 13-#define TAINT_SOFTLOCKUP 14-#define TAINT_LIVEPATCH 15-#define TAINT_AUX 16-#define TAINT_RANDSTRUCT 17-#define TAINT_FLAGS_COUNT 18-#define TAINT_FLAGS_MAX ((1UL << TAINT_FLAGS_COUNT) - 1)--structtaint_flag{-charc_true;/* character printed when tainted */-charc_false;/* character printed when not tainted */-boolmodule;/* also show as a per-module taint flag */-};--externconststructtaint_flagtaint_flags[TAINT_FLAGS_COUNT];-externconstcharhex_asc[];#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
From: Christian Brauner <hidden> Date: 2021-04-06 14:43:40
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
(I think David has tried something like this a few years ago too?)
Good idea in any case. (Be good to see kbuild do an allmodconfig build
of this though.)
Acked-by: Christian Brauner <redacted>
@@ -175,14 +175,6 @@ void __might_fault(const char *file, int line);staticinlinevoidmight_fault(void){}#endif-externstructatomic_notifier_headpanic_notifier_list;-externlong(*panic_blink)(intstate);-__printf(1,2)-voidpanic(constchar*fmt,...)__noreturn__cold;-voidnmi_panic(structpt_regs*regs,constchar*msg);-externvoidoops_enter(void);-externvoidoops_exit(void);-externbooloops_may_print(void);voiddo_exit(longerror_code)__noreturn;voidcomplete_and_exit(structcompletion*,long)__noreturn;
@@ -368,52 +360,8 @@ extern int __kernel_text_address(unsigned long addr);externintkernel_text_address(unsignedlongaddr);externintfunc_ptr_is_kernel_text(void*ptr);-#ifdef CONFIG_SMP-externunsignedintsysctl_oops_all_cpu_backtrace;-#else-#define sysctl_oops_all_cpu_backtrace 0-#endif /* CONFIG_SMP */-externvoidbust_spinlocks(intyes);-externintpanic_timeout;-externunsignedlongpanic_print;-externintpanic_on_oops;-externintpanic_on_unrecovered_nmi;-externintpanic_on_io_nmi;-externintpanic_on_warn;-externunsignedlongpanic_on_taint;-externboolpanic_on_taint_nousertaint;-externintsysctl_panic_on_rcu_stall;-externintsysctl_max_rcu_stall_to_panic;-externintsysctl_panic_on_stackoverflow;--externboolcrash_kexec_post_notifiers;-/*-*panic_cpuisusedforsynchronizingpanic()andcrash_kexec()execution.It-*holdsaCPUnumberwhichisexecutingpanic()currently.Avalueof-*PANIC_CPU_INVALIDmeansnoCPUhasenteredpanic()orcrash_kexec().-*/-externatomic_tpanic_cpu;-#define PANIC_CPU_INVALID -1--/*-*Onlytobeusedbyarchinitcode.Iftheuserover-wrotethedefault-*CONFIG_PANIC_TIMEOUT,honorit.-*/-staticinlinevoidset_arch_panic_timeout(inttimeout,intarch_default_timeout)-{-if(panic_timeout==arch_default_timeout)-panic_timeout=timeout;-}-externconstchar*print_tainted(void);-enumlockdep_ok{-LOCKDEP_STILL_OK,-LOCKDEP_NOW_UNRELIABLE-};-externvoidadd_taint(unsignedflag,enumlockdep_ok);-externinttest_taint(unsignedflag);-externunsignedlongget_taint(void);externintroot_mountflags;externboolearly_boot_irqs_disabled;
@@ -432,36 +380,6 @@ extern enum system_states {SYSTEM_SUSPEND,}system_state;-/* This cannot be an enum because some may be used in assembly source. */-#define TAINT_PROPRIETARY_MODULE 0-#define TAINT_FORCED_MODULE 1-#define TAINT_CPU_OUT_OF_SPEC 2-#define TAINT_FORCED_RMMOD 3-#define TAINT_MACHINE_CHECK 4-#define TAINT_BAD_PAGE 5-#define TAINT_USER 6-#define TAINT_DIE 7-#define TAINT_OVERRIDDEN_ACPI_TABLE 8-#define TAINT_WARN 9-#define TAINT_CRAP 10-#define TAINT_FIRMWARE_WORKAROUND 11-#define TAINT_OOT_MODULE 12-#define TAINT_UNSIGNED_MODULE 13-#define TAINT_SOFTLOCKUP 14-#define TAINT_LIVEPATCH 15-#define TAINT_AUX 16-#define TAINT_RANDSTRUCT 17-#define TAINT_FLAGS_COUNT 18-#define TAINT_FLAGS_MAX ((1UL << TAINT_FLAGS_COUNT) - 1)--structtaint_flag{-charc_true;/* character printed when tainted */-charc_false;/* character printed when not tainted */-boolmodule;/* also show as a per-module taint flag */-};--externconststructtaint_flagtaint_flags[TAINT_FLAGS_COUNT];-externconstcharhex_asc[];#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
On Tue, Apr 6, 2021 at 3:31 PM Andy Shevchenko
[off-list ref] wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
From: Andy Shevchenko <hidden> Date: 2021-04-07 14:59:44
On Wed, Apr 7, 2021 at 5:30 PM Luis Chamberlain [off-list ref] wrote:
On Wed, Apr 07, 2021 at 10:33:44AM +0300, Andy Shevchenko wrote:
quoted
On Wed, Apr 7, 2021 at 10:25 AM Luis Chamberlain [off-list ref] wrote:
quoted
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
...
quoted
quoted
Why is it worth it to add another file just for this?
The main point is to break tons of loops that prevent having clean
headers anymore.
In this case, see bug.h, which is very important in this sense.
OK based on the commit log this was not clear, it seemed more of moving
panic stuff to its own file, so just cleanup.
Sorry for that. it should have mentioned the kernel folder instead of
lib. But I think it won't clarify the above.
In any case there are several purposes in this case
- dropping dependency in bug.h
- dropping a loop by moving out panic_notifier.h
- unload kernel.h from something which has its own domain
I think that you are referring to the commit message describing 3rd
one, but not 1st and 2nd.
I will amend this for the future splits, thanks!
quoted
quoted
Seems like a very
small file.
If it is an argument, it's kinda strange. We have much smaller headers.
The motivation for such separate file was just not clear on the commit
log.
From: Luis Chamberlain <mcgrof@kernel.org> Date: 2021-04-07 15:30:04
On Wed, Apr 07, 2021 at 05:59:19PM +0300, Andy Shevchenko wrote:
On Wed, Apr 7, 2021 at 5:30 PM Luis Chamberlain [off-list ref] wrote:
quoted
On Wed, Apr 07, 2021 at 10:33:44AM +0300, Andy Shevchenko wrote:
quoted
On Wed, Apr 7, 2021 at 10:25 AM Luis Chamberlain [off-list ref] wrote:
quoted
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
...
quoted
quoted
quoted
Why is it worth it to add another file just for this?
The main point is to break tons of loops that prevent having clean
headers anymore.
In this case, see bug.h, which is very important in this sense.
OK based on the commit log this was not clear, it seemed more of moving
panic stuff to its own file, so just cleanup.
Sorry for that. it should have mentioned the kernel folder instead of
lib. But I think it won't clarify the above.
In any case there are several purposes in this case
- dropping dependency in bug.h
- dropping a loop by moving out panic_notifier.h
- unload kernel.h from something which has its own domain
I think that you are referring to the commit message describing 3rd
one, but not 1st and 2nd.
Right!
I will amend this for the future splits, thanks!
Don't get me wrong, I love the motivation behind just the 3rd purpose,
however I figured there might be something more when I saw panic_notifier.h.
It was just not clear.
But awesome stuff!
Luis
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
I like it! Do you have a multi-arch CI to do allmodconfig builds to
double-check this?
Acked-by: Kees Cook <redacted>
-Kees
--
Kees Cook
From: Andy Shevchenko <hidden> Date: 2021-04-07 08:47:16
On Wed, Apr 7, 2021 at 11:17 AM Kees Cook [off-list ref] wrote:
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
quoted
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
I like it! Do you have a multi-arch CI to do allmodconfig builds to
double-check this?
Unfortunately no, I rely on plenty of bots that are harvesting mailing lists.
But I will appreciate it if somebody can run this through various build tests.
From: Andrew Morton <akpm@linux-foundation.org> Date: 2021-04-09 06:23:08
On Wed, 7 Apr 2021 11:46:37 +0300 Andy Shevchenko [off-list ref] wrote:
On Wed, Apr 7, 2021 at 11:17 AM Kees Cook [off-list ref] wrote:
quoted
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
quoted
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
I like it! Do you have a multi-arch CI to do allmodconfig builds to
double-check this?
Unfortunately no, I rely on plenty of bots that are harvesting mailing lists.
But I will appreciate it if somebody can run this through various build tests.
um, did you try x86_64 allmodconfig?
I'm up to
kernelh-split-out-panic-and-oops-helpers-fix-fix-fix-fix-fix-fix-fix.patch
and counting.
From: Andrew Morton <akpm@linux-foundation.org>
Subject: kernelh-split-out-panic-and-oops-helpers-fix
more files need panic_notifier.h
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/x86/xen/enlighten.c | 1 +
drivers/video/fbdev/hyperv_fb.c | 1 +
2 files changed, 2 insertions(+)
From: Andy Shevchenko <hidden> Date: 2021-04-09 08:22:44
On Thu, Apr 08, 2021 at 11:23:03PM -0700, Andrew Morton wrote:
On Wed, 7 Apr 2021 11:46:37 +0300 Andy Shevchenko [off-list ref] wrote:
quoted
On Wed, Apr 7, 2021 at 11:17 AM Kees Cook [off-list ref] wrote:
quoted
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
quoted
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
I like it! Do you have a multi-arch CI to do allmodconfig builds to
double-check this?
Unfortunately no, I rely on plenty of bots that are harvesting mailing lists.
But I will appreciate it if somebody can run this through various build tests.
um, did you try x86_64 allmodconfig?
I'm up to
kernelh-split-out-panic-and-oops-helpers-fix-fix-fix-fix-fix-fix-fix.patch
and counting.
I will try on my side and will fix those, thanks!
and.... drivers/leds/trigger/ledtrig-heartbeat.c as well.
I'll drop it.
No problem, thanks for the report.
--
With Best Regards,
Andy Shevchenko
From: Wei Liu <wei.liu@kernel.org> Date: 2021-04-06 23:41:27
On Tue, Apr 06, 2021 at 04:31:58PM +0300, Andy Shevchenko wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
I think it would be good to have some place to note that "This #include
is just for backwards compatibility, it will go away RealSoonNow, so if
you rely on something from linux/panic.h, include that explicitly
yourself TYVM. And if you're looking for a janitorial task, write a
script to check that every file that uses some identifier defined in
panic.h actually includes that file. When all offenders are found and
dealt with, remove the #include and this note.".
+
+struct taint_flag {
+ char c_true; /* character printed when tainted */
+ char c_false; /* character printed when not tainted */
+ bool module; /* also show as a per-module taint flag */
+};
+
+extern const struct taint_flag taint_flags[TAINT_FLAGS_COUNT];
While you're doing this, nothing outside of kernel/panic.c cares about
the definition of struct taint_flag or use the taint_flags array, so
could you make the definition private to that file and make the array
static? (Another patch, of course.)
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2021-04-08 13:29:25
On Thu, Apr 08, 2021 at 02:45:12PM +0200, Rasmus Villemoes wrote:
On 06/04/2021 15.31, Andy Shevchenko wrote:
quoted
kernel.h is being used as a dump for all kinds of stuff for a long time.
Here is the attempt to start cleaning it up by splitting out panic and
oops helpers.
At the same time convert users in header and lib folder to use new header.
Though for time being include new header back to kernel.h to avoid twisted
indirected includes for existing users.
I think it would be good to have some place to note that "This #include
is just for backwards compatibility, it will go away RealSoonNow, so if
you rely on something from linux/panic.h, include that explicitly
yourself TYVM. And if you're looking for a janitorial task, write a
script to check that every file that uses some identifier defined in
panic.h actually includes that file. When all offenders are found and
dealt with, remove the #include and this note.".
Good and...
quoted
+struct taint_flag {
+ char c_true; /* character printed when tainted */
+ char c_false; /* character printed when not tainted */
+ bool module; /* also show as a per-module taint flag */
+};
+
+extern const struct taint_flag taint_flags[TAINT_FLAGS_COUNT];
While you're doing this, nothing outside of kernel/panic.c cares about
the definition of struct taint_flag or use the taint_flags array, so
could you make the definition private to that file and make the array
static? (Another patch, of course.)
...according to the above if *you are looking for a janitorial task*... :-))
I know you're just moving code, but it would be a nice opportunity to
drop the redundant externs.
As above. But for all these I have heard you. So, I'll keep this response
as part of my always only growing TODO list.
--
With Best Regards,
Andy Shevchenko