Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db96212b authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

ANDROID: GKI: fix ABI breakage in module.h



commit 262e6ae7081d ("modules: inherit TAINT_PROPRIETARY_MODULE")
changes the size of 'struct module' a bit by adding a single boolean
value to the middle.  Move things around a bit and take up a space to
preserve the abi so that nothing changes with the abi before that commit
was merged.

This might be able to be dropped at the next Android KABI "Break", if
one happens.

Bug: 171277690
Fixes: 262e6ae7081d ("modules: inherit TAINT_PROPRIETARY_MODULE")
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
Change-Id: Ie31a6fcea384ad665248c87f7abfde4d214da70a
parent 35b56098
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -346,6 +346,11 @@ struct klp_modinfo {
};
#endif

struct module_kabi_preserve_1 {
	u64		using_gplonly_symbols:1;
	u64		free:63;
};

struct module {
	enum module_state state;

@@ -382,7 +387,6 @@ struct module {
	unsigned int num_gpl_syms;
	const struct kernel_symbol *gpl_syms;
	const s32 *gpl_crcs;
	bool using_gplonly_symbols;

#ifdef CONFIG_UNUSED_SYMBOLS
	/* unused exported symbols. */
@@ -516,7 +520,7 @@ struct module {
	struct error_injection_entry *ei_funcs;
	unsigned int num_ei_funcs;
#endif
	ANDROID_KABI_RESERVE(1);
	ANDROID_KABI_USE(1, struct module_kabi_preserve_1 m1);
	ANDROID_KABI_RESERVE(2);
	ANDROID_KABI_RESERVE(3);
	ANDROID_KABI_RESERVE(4);
+2 −2
Original line number Diff line number Diff line
@@ -1432,7 +1432,7 @@ static bool inherit_taint(struct module *mod, struct module *owner)
	if (!owner || !test_bit(TAINT_PROPRIETARY_MODULE, &owner->taints))
		return true;

	if (mod->using_gplonly_symbols) {
	if (mod->m1.using_gplonly_symbols) {
		pr_err("%s: module using GPL-only symbols uses symbols from proprietary module %s.\n",
			mod->name, owner->name);
		return false;
@@ -1471,7 +1471,7 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod,
		goto unlock;

	if (license == GPL_ONLY)
		mod->using_gplonly_symbols = true;
		mod->m1.using_gplonly_symbols = true;

	if (!inherit_taint(mod, owner)) {
		sym = NULL;