All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lecopzer Chen <lecopzer.chen@mediatek.com>
To: Luis Chamberlain <mcgrof@kernel.org>, <linux-kernel@vger.kernel.org>
Cc: Matthias Brugger <matthias.bgg@gmail.com>,
	<linux-modules@vger.kernel.org>,
	<linux-mediatek@lists.infradead.org>, <yj.chiang@mediatek.com>,
	<lecopzer.chen@mediatek.com>
Subject: [PATCH] module: show disallowed symbol name for inherit_taint()
Date: Tue, 26 Apr 2022 12:21:20 +0800	[thread overview]
Message-ID: <20220426042120.9686-1-lecopzer.chen@mediatek.com> (raw)

The error log for inherit_taint() doesn't really help to find the symbols
which violate GPL rules.

For example,
if a module has 50 disallowed symbols, the log only shows the content below
and is duplicated with 50 lines.
    AAA: module using GPL-only symbols uses symbols from proprietary module BBB.
    AAA: module using GPL-only symbols uses symbols from proprietary module BBB.
    ...

This patch add symbol name to tell the offending symbols explicitly.

To-be:
    AAA: module using GPL-only symbols uses symbols SS1 from proprietary module BBB.
    AAA: module using GPL-only symbols uses symbols SS2 from proprietary module BBB.
    ...

Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com>
---
 kernel/module.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/kernel/module.c b/kernel/module.c
index 6cea788fd965..30973f0d2b7c 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1372,20 +1372,20 @@ static int verify_namespace_is_imported(const struct load_info *info,
 	return 0;
 }
 
-static bool inherit_taint(struct module *mod, struct module *owner)
+static bool inherit_taint(struct module *mod, struct module *owner, const char *name)
 {
 	if (!owner || !test_bit(TAINT_PROPRIETARY_MODULE, &owner->taints))
 		return true;
 
 	if (mod->using_gplonly_symbols) {
-		pr_err("%s: module using GPL-only symbols uses symbols from proprietary module %s.\n",
-			mod->name, owner->name);
+		pr_err("%s: module using GPL-only symbols uses symbols %s from proprietary module %s.\n",
+			mod->name, name, owner->name);
 		return false;
 	}
 
 	if (!test_bit(TAINT_PROPRIETARY_MODULE, &mod->taints)) {
-		pr_warn("%s: module uses symbols from proprietary module %s, inheriting taint.\n",
-			mod->name, owner->name);
+		pr_warn("%s: module uses symbols %s from proprietary module %s, inheriting taint.\n",
+			mod->name, name, owner->name);
 		set_bit(TAINT_PROPRIETARY_MODULE, &mod->taints);
 	}
 	return true;
@@ -1417,7 +1417,7 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod,
 	if (fsa.license == GPL_ONLY)
 		mod->using_gplonly_symbols = true;
 
-	if (!inherit_taint(mod, fsa.owner)) {
+	if (!inherit_taint(mod, fsa.owner, name)) {
 		fsa.sym = NULL;
 		goto getname;
 	}
-- 
2.18.0


WARNING: multiple messages have this Message-ID (diff)
From: Lecopzer Chen <lecopzer.chen@mediatek.com>
To: Luis Chamberlain <mcgrof@kernel.org>, <linux-kernel@vger.kernel.org>
Cc: Matthias Brugger <matthias.bgg@gmail.com>,
	<linux-modules@vger.kernel.org>,
	<linux-mediatek@lists.infradead.org>, <yj.chiang@mediatek.com>,
	<lecopzer.chen@mediatek.com>
Subject: [PATCH] module: show disallowed symbol name for inherit_taint()
Date: Tue, 26 Apr 2022 12:21:20 +0800	[thread overview]
Message-ID: <20220426042120.9686-1-lecopzer.chen@mediatek.com> (raw)

The error log for inherit_taint() doesn't really help to find the symbols
which violate GPL rules.

For example,
if a module has 50 disallowed symbols, the log only shows the content below
and is duplicated with 50 lines.
    AAA: module using GPL-only symbols uses symbols from proprietary module BBB.
    AAA: module using GPL-only symbols uses symbols from proprietary module BBB.
    ...

This patch add symbol name to tell the offending symbols explicitly.

To-be:
    AAA: module using GPL-only symbols uses symbols SS1 from proprietary module BBB.
    AAA: module using GPL-only symbols uses symbols SS2 from proprietary module BBB.
    ...

Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com>
---
 kernel/module.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/kernel/module.c b/kernel/module.c
index 6cea788fd965..30973f0d2b7c 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1372,20 +1372,20 @@ static int verify_namespace_is_imported(const struct load_info *info,
 	return 0;
 }
 
-static bool inherit_taint(struct module *mod, struct module *owner)
+static bool inherit_taint(struct module *mod, struct module *owner, const char *name)
 {
 	if (!owner || !test_bit(TAINT_PROPRIETARY_MODULE, &owner->taints))
 		return true;
 
 	if (mod->using_gplonly_symbols) {
-		pr_err("%s: module using GPL-only symbols uses symbols from proprietary module %s.\n",
-			mod->name, owner->name);
+		pr_err("%s: module using GPL-only symbols uses symbols %s from proprietary module %s.\n",
+			mod->name, name, owner->name);
 		return false;
 	}
 
 	if (!test_bit(TAINT_PROPRIETARY_MODULE, &mod->taints)) {
-		pr_warn("%s: module uses symbols from proprietary module %s, inheriting taint.\n",
-			mod->name, owner->name);
+		pr_warn("%s: module uses symbols %s from proprietary module %s, inheriting taint.\n",
+			mod->name, name, owner->name);
 		set_bit(TAINT_PROPRIETARY_MODULE, &mod->taints);
 	}
 	return true;
@@ -1417,7 +1417,7 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod,
 	if (fsa.license == GPL_ONLY)
 		mod->using_gplonly_symbols = true;
 
-	if (!inherit_taint(mod, fsa.owner)) {
+	if (!inherit_taint(mod, fsa.owner, name)) {
 		fsa.sym = NULL;
 		goto getname;
 	}
-- 
2.18.0


_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

             reply	other threads:[~2022-04-26  4:21 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-26  4:21 Lecopzer Chen [this message]
2022-04-26  4:21 ` [PATCH] module: show disallowed symbol name for inherit_taint() Lecopzer Chen
2022-04-26 16:26 ` Luis Chamberlain
2022-04-26 16:26   ` Luis Chamberlain
2022-04-27  7:40   ` Lecopzer Chen
2022-04-27  7:40     ` Lecopzer Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220426042120.9686-1-lecopzer.chen@mediatek.com \
    --to=lecopzer.chen@mediatek.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=matthias.bgg@gmail.com \
    --cc=mcgrof@kernel.org \
    --cc=yj.chiang@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.