-
-
Notifications
You must be signed in to change notification settings - Fork 275
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
126 changed files
with
14,800 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
210 changes: 210 additions & 0 deletions
210
6.6/target/linux/generic/hack-6.6/204-module_strip.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,210 @@ | ||
From a779a482fb9b9f8fcdf8b2519c789b4b9bb5dd05 Mon Sep 17 00:00:00 2001 | ||
From: Felix Fietkau <[email protected]> | ||
Date: Fri, 7 Jul 2017 16:56:48 +0200 | ||
Subject: build: add a hack for removing non-essential module info | ||
|
||
Signed-off-by: Felix Fietkau <[email protected]> | ||
--- | ||
include/linux/module.h | 13 ++++++++----- | ||
include/linux/moduleparam.h | 15 ++++++++++++--- | ||
init/Kconfig | 7 +++++++ | ||
kernel/module.c | 5 ++++- | ||
scripts/mod/modpost.c | 12 ++++++++++++ | ||
5 files changed, 43 insertions(+), 9 deletions(-) | ||
|
||
--- a/include/linux/module.h | ||
+++ b/include/linux/module.h | ||
@@ -163,6 +163,7 @@ extern void cleanup_module(void); | ||
|
||
/* Generic info of form tag = "info" */ | ||
#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info) | ||
+#define MODULE_INFO_STRIP(tag, info) __MODULE_INFO_STRIP(tag, tag, info) | ||
|
||
/* For userspace: you can also call me... */ | ||
#define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias) | ||
@@ -232,12 +233,12 @@ extern void cleanup_module(void); | ||
* Author(s), use "Name <email>" or just "Name", for multiple | ||
* authors use multiple MODULE_AUTHOR() statements/lines. | ||
*/ | ||
-#define MODULE_AUTHOR(_author) MODULE_INFO(author, _author) | ||
+#define MODULE_AUTHOR(_author) MODULE_INFO_STRIP(author, _author) | ||
|
||
/* What your module does. */ | ||
-#define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) | ||
+#define MODULE_DESCRIPTION(_description) MODULE_INFO_STRIP(description, _description) | ||
|
||
-#ifdef MODULE | ||
+#if defined(MODULE) && !defined(CONFIG_MODULE_STRIPPED) | ||
/* Creates an alias so file2alias.c can find device table. */ | ||
#define MODULE_DEVICE_TABLE(type, name) \ | ||
extern typeof(name) __mod_##type##__##name##_device_table \ | ||
@@ -264,7 +265,9 @@ extern typeof(name) __mod_##type##__##na | ||
*/ | ||
|
||
#if defined(MODULE) || !defined(CONFIG_SYSFS) | ||
-#define MODULE_VERSION(_version) MODULE_INFO(version, _version) | ||
+#define MODULE_VERSION(_version) MODULE_INFO_STRIP(version, _version) | ||
+#elif defined(CONFIG_MODULE_STRIPPED) | ||
+#define MODULE_VERSION(_version) __MODULE_INFO_DISABLED(version) | ||
#else | ||
#define MODULE_VERSION(_version) \ | ||
MODULE_INFO(version, _version); \ | ||
@@ -287,7 +290,7 @@ extern typeof(name) __mod_##type##__##na | ||
/* Optional firmware file (or files) needed by the module | ||
* format is simply firmware file name. Multiple firmware | ||
* files require multiple MODULE_FIRMWARE() specifiers */ | ||
-#define MODULE_FIRMWARE(_firmware) MODULE_INFO(firmware, _firmware) | ||
+#define MODULE_FIRMWARE(_firmware) MODULE_INFO_STRIP(firmware, _firmware) | ||
|
||
#define MODULE_IMPORT_NS(ns) MODULE_INFO(import_ns, __stringify(ns)) | ||
|
||
--- a/include/linux/moduleparam.h | ||
+++ b/include/linux/moduleparam.h | ||
@@ -20,6 +20,16 @@ | ||
/* Chosen so that structs with an unsigned long line up. */ | ||
#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long)) | ||
|
||
+/* This struct is here for syntactic coherency, it is not used */ | ||
+#define __MODULE_INFO_DISABLED(name) \ | ||
+ struct __UNIQUE_ID(name) {} | ||
+ | ||
+#ifdef CONFIG_MODULE_STRIPPED | ||
+#define __MODULE_INFO_STRIP(tag, name, info) __MODULE_INFO_DISABLED(name) | ||
+#else | ||
+#define __MODULE_INFO_STRIP(tag, name, info) __MODULE_INFO(tag, name, info) | ||
+#endif | ||
+ | ||
#define __MODULE_INFO(tag, name, info) \ | ||
static const char __UNIQUE_ID(name)[] \ | ||
__used __section(".modinfo") __aligned(1) \ | ||
@@ -31,7 +41,7 @@ | ||
/* One for each parameter, describing how to use it. Some files do | ||
multiple of these per line, so can't just use MODULE_INFO. */ | ||
#define MODULE_PARM_DESC(_parm, desc) \ | ||
- __MODULE_INFO(parm, _parm, #_parm ":" desc) | ||
+ __MODULE_INFO_STRIP(parm, _parm, #_parm ":" desc) | ||
|
||
struct kernel_param; | ||
|
||
--- a/kernel/module/Kconfig | ||
+++ b/kernel/module/Kconfig | ||
@@ -290,4 +290,11 @@ config MODULES_TREE_LOOKUP | ||
def_bool y | ||
depends on PERF_EVENTS || TRACING || CFI_CLANG | ||
|
||
+config MODULE_STRIPPED | ||
+ bool "Reduce module size" | ||
+ depends on MODULES | ||
+ help | ||
+ Remove module parameter descriptions, author info, version, aliases, | ||
+ device tables, etc. | ||
+ | ||
endif # MODULES | ||
--- a/kernel/module/main.c | ||
+++ b/kernel/module/main.c | ||
@@ -988,6 +988,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE( | ||
|
||
static const char vermagic[] = VERMAGIC_STRING; | ||
|
||
+#if defined(CONFIG_MODVERSIONS) || !defined(CONFIG_MODULE_STRIPPED) | ||
int try_to_force_load(struct module *mod, const char *reason) | ||
{ | ||
#ifdef CONFIG_MODULE_FORCE_LOAD | ||
@@ -999,6 +1000,7 @@ int try_to_force_load(struct module *mod | ||
return -ENOEXEC; | ||
#endif | ||
} | ||
+#endif | ||
|
||
static char *get_modinfo(const struct load_info *info, const char *tag); | ||
static char *get_next_modinfo(const struct load_info *info, const char *tag, | ||
@@ -1958,9 +1960,11 @@ static int setup_load_info(struct load_i | ||
|
||
static int check_modinfo(struct module *mod, struct load_info *info, int flags) | ||
{ | ||
- const char *modmagic = get_modinfo(info, "vermagic"); | ||
int err; | ||
|
||
+#ifndef CONFIG_MODULE_STRIPPED | ||
+ const char *modmagic = get_modinfo(info, "vermagic"); | ||
+ | ||
if (flags & MODULE_INIT_IGNORE_VERMAGIC) | ||
modmagic = NULL; | ||
|
||
@@ -1981,6 +1985,7 @@ static int check_modinfo(struct module * | ||
mod->name); | ||
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK); | ||
} | ||
+#endif | ||
|
||
check_modinfo_retpoline(mod, info); | ||
|
||
--- a/scripts/mod/modpost.c | ||
+++ b/scripts/mod/modpost.c | ||
@@ -1781,7 +1781,9 @@ static void read_symbols(const char *mod | ||
symname = remove_dot(info.strtab + sym->st_name); | ||
|
||
handle_symbol(mod, &info, sym, symname); | ||
+#ifndef CONFIG_MODULE_STRIPPED | ||
handle_moddevtable(mod, &info, sym, symname); | ||
+#endif | ||
} | ||
|
||
for (sym = info.symtab_start; sym < info.symtab_stop; sym++) { | ||
@@ -1944,8 +1946,10 @@ static void add_header(struct buffer *b, | ||
buf_printf(b, "BUILD_SALT;\n"); | ||
buf_printf(b, "BUILD_LTO_INFO;\n"); | ||
buf_printf(b, "\n"); | ||
+#ifndef CONFIG_MODULE_STRIPPED | ||
buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n"); | ||
buf_printf(b, "MODULE_INFO(name, KBUILD_MODNAME);\n"); | ||
+#endif | ||
buf_printf(b, "\n"); | ||
buf_printf(b, "__visible struct module __this_module\n"); | ||
buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n"); | ||
@@ -1959,8 +1963,10 @@ static void add_header(struct buffer *b, | ||
buf_printf(b, "\t.arch = MODULE_ARCH_INIT,\n"); | ||
buf_printf(b, "};\n"); | ||
|
||
+#ifndef CONFIG_MODULE_STRIPPED | ||
if (!external_module) | ||
buf_printf(b, "\nMODULE_INFO(intree, \"Y\");\n"); | ||
+#endif | ||
|
||
buf_printf(b, | ||
"\n" | ||
@@ -1968,8 +1974,10 @@ static void add_header(struct buffer *b, | ||
"MODULE_INFO(retpoline, \"Y\");\n" | ||
"#endif\n"); | ||
|
||
+#ifndef CONFIG_MODULE_STRIPPED | ||
if (strstarts(mod->name, "drivers/staging")) | ||
buf_printf(b, "\nMODULE_INFO(staging, \"Y\");\n"); | ||
+#endif | ||
|
||
if (strstarts(mod->name, "tools/testing")) | ||
buf_printf(b, "\nMODULE_INFO(test, \"Y\");\n"); | ||
@@ -2065,11 +2073,13 @@ static void add_depends(struct buffer *b | ||
|
||
static void add_srcversion(struct buffer *b, struct module *mod) | ||
{ | ||
+#ifndef CONFIG_MODULE_STRIPPED | ||
if (mod->srcversion[0]) { | ||
buf_printf(b, "\n"); | ||
buf_printf(b, "MODULE_INFO(srcversion, \"%s\");\n", | ||
mod->srcversion); | ||
} | ||
+#endif | ||
} | ||
|
||
static void write_buf(struct buffer *b, const char *fname) | ||
@@ -2155,7 +2165,9 @@ static void write_mod_c_file(struct modu | ||
add_exported_symbols(&buf, mod); | ||
add_versions(&buf, mod); | ||
add_depends(&buf, mod); | ||
+#ifndef CONFIG_MODULE_STRIPPED | ||
add_moddevtable(&buf, mod); | ||
+#endif | ||
add_srcversion(&buf, mod); | ||
|
||
ret = snprintf(fname, sizeof(fname), "%s.mod.c", mod->name); |
41 changes: 41 additions & 0 deletions
41
6.6/target/linux/generic/hack-6.6/205-kconfig-abort-configuration-on-unset-symbol.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
From 310e8e04a05d9eb43fa9dd7f00143300afcaa37a Mon Sep 17 00:00:00 2001 | ||
From: David Bauer <[email protected]> | ||
Date: Fri, 11 Nov 2022 13:33:44 +0100 | ||
Subject: [PATCH] kconfig: abort configuration on unset symbol | ||
|
||
When a target configuration has unset Kconfig symbols, the build will | ||
fail when OpenWrt is compiled with V=s and stdin is connected to a tty. | ||
|
||
In case OpenWrt is compiled without either of these preconditions, the | ||
build will succeed with the symbols in question being unset. | ||
|
||
Modify the kernel configuration in a way it fails on unset symbols | ||
regardless of the aforementioned preconditions. | ||
|
||
Signed-off-by: David Bauer <[email protected]> | ||
--- | ||
scripts/kconfig/conf.c | 6 ++++++ | ||
1 file changed, 6 insertions(+) | ||
|
||
--- a/scripts/kconfig/conf.c | ||
+++ b/scripts/kconfig/conf.c | ||
@@ -338,6 +338,9 @@ static int conf_askvalue(struct symbol * | ||
} | ||
/* fall through */ | ||
default: | ||
+ if (!tty_stdio && getenv("FAIL_ON_UNCONFIGURED")) { | ||
+ exit(1); | ||
+ } | ||
fflush(stdout); | ||
xfgets(line, sizeof(line), stdin); | ||
break; | ||
@@ -520,6 +523,9 @@ static int conf_choice(struct menu *menu | ||
} | ||
/* fall through */ | ||
case oldaskconfig: | ||
+ if (!tty_stdio && getenv("FAIL_ON_UNCONFIGURED")) { | ||
+ exit(1); | ||
+ } | ||
fflush(stdout); | ||
xfgets(line, sizeof(line), stdin); | ||
strip(line); |
Oops, something went wrong.