From: Christoph Hellwig <hch@lst.de> To: Luis Chamberlain <mcgrof@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Daniel Mack <daniel@zonque.org>, Haojian Zhuang <haojian.zhuang@gmail.com>, Robert Jarzmik <robert.jarzmik@free.fr>, Ulf Hansson <ulf.hansson@linaro.org>, Manuel Lauss <manuel.lauss@gmail.com>, Yangbo Lu <yangbo.lu@nxp.com>, Joshua Kinard <kumba@gentoo.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>, Arnd Bergmann <arnd@arndb.de>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org (open list), linux-mmc@vger.kernel.org, netdev@vger.kernel.org, linux-rtc@vger.kernel.org, linux-modules@vger.kernel.org Subject: [PATCH 5/5] modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules Date: Tue, 1 Aug 2023 19:35:44 +0200 [thread overview] Message-ID: <20230801173544.1929519-6-hch@lst.de> (raw) In-Reply-To: <20230801173544.1929519-1-hch@lst.de> It has recently come to my attention that nvidia is circumventing the protection added in 262e6ae7081d ("modules: inherit TAINT_PROPRIETARY_MODULE") by importing exports from their proprietary modules into an allegedly GPL licensed module and then rexporting them. Given that symbol_get was only ever intended for tightly cooperating modules using very internal symbols it is logical to restrict it to being used on EXPORT_SYMBOL_GPL and prevent nvidia from costly DMCA Circumvention of Access Controls law suites. All symbols except for four used through symbol_get were already exported as EXPORT_SYMBOL_GPL, and the remaining four ones were switched over in the preparation patches. Fixes: 262e6ae7081d ("modules: inherit TAINT_PROPRIETARY_MODULE") Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- kernel/module/main.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/kernel/module/main.c b/kernel/module/main.c index 59b1d067e52890..c395af9eced114 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -1295,12 +1295,20 @@ void *__symbol_get(const char *symbol) }; preempt_disable(); - if (!find_symbol(&fsa) || strong_try_module_get(fsa.owner)) { - preempt_enable(); - return NULL; + if (!find_symbol(&fsa)) + goto fail; + if (fsa.license != GPL_ONLY) { + pr_warn("failing symbol_get of non-GPLONLY symbol %s.\n", + symbol); + goto fail; } + if (strong_try_module_get(fsa.owner)) + goto fail; preempt_enable(); return (void *)kernel_symbol_value(fsa.sym); +fail: + preempt_enable(); + return NULL; } EXPORT_SYMBOL_GPL(__symbol_get); -- 2.39.2
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de> To: Luis Chamberlain <mcgrof@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Daniel Mack <daniel@zonque.org>, Haojian Zhuang <haojian.zhuang@gmail.com>, Robert Jarzmik <robert.jarzmik@free.fr>, Ulf Hansson <ulf.hansson@linaro.org>, Manuel Lauss <manuel.lauss@gmail.com>, Yangbo Lu <yangbo.lu@nxp.com>, Joshua Kinard <kumba@gentoo.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>, Arnd Bergmann <arnd@arndb.de>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org (open list), linux-mmc@vger.kernel.org, netdev@vger.kernel.org, linux-rtc@vger.kernel.org, linux-modules@vger.kernel.org Subject: [PATCH 5/5] modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules Date: Tue, 1 Aug 2023 19:35:44 +0200 [thread overview] Message-ID: <20230801173544.1929519-6-hch@lst.de> (raw) In-Reply-To: <20230801173544.1929519-1-hch@lst.de> It has recently come to my attention that nvidia is circumventing the protection added in 262e6ae7081d ("modules: inherit TAINT_PROPRIETARY_MODULE") by importing exports from their proprietary modules into an allegedly GPL licensed module and then rexporting them. Given that symbol_get was only ever intended for tightly cooperating modules using very internal symbols it is logical to restrict it to being used on EXPORT_SYMBOL_GPL and prevent nvidia from costly DMCA Circumvention of Access Controls law suites. All symbols except for four used through symbol_get were already exported as EXPORT_SYMBOL_GPL, and the remaining four ones were switched over in the preparation patches. Fixes: 262e6ae7081d ("modules: inherit TAINT_PROPRIETARY_MODULE") Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- kernel/module/main.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/kernel/module/main.c b/kernel/module/main.c index 59b1d067e52890..c395af9eced114 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -1295,12 +1295,20 @@ void *__symbol_get(const char *symbol) }; preempt_disable(); - if (!find_symbol(&fsa) || strong_try_module_get(fsa.owner)) { - preempt_enable(); - return NULL; + if (!find_symbol(&fsa)) + goto fail; + if (fsa.license != GPL_ONLY) { + pr_warn("failing symbol_get of non-GPLONLY symbol %s.\n", + symbol); + goto fail; } + if (strong_try_module_get(fsa.owner)) + goto fail; preempt_enable(); return (void *)kernel_symbol_value(fsa.sym); +fail: + preempt_enable(); + return NULL; } EXPORT_SYMBOL_GPL(__symbol_get); -- 2.39.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-08-01 17:36 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-08-01 17:35 require EXPORT_SYMBOL_GPL symbols for symbol_get v2 Christoph Hellwig 2023-08-01 17:35 ` Christoph Hellwig 2023-08-01 17:35 ` [PATCH 1/5] ARM: pxa: remove use of symbol_get() Christoph Hellwig 2023-08-01 17:35 ` Christoph Hellwig 2023-08-01 17:35 ` [PATCH 2/5] mmc: au1xmmc: force non-modular build and remove symbol_get usage Christoph Hellwig 2023-08-01 17:35 ` Christoph Hellwig 2023-08-02 7:12 ` Manuel Lauss 2023-08-02 7:12 ` Manuel Lauss 2023-08-02 8:31 ` Arnd Bergmann 2023-08-02 8:31 ` Arnd Bergmann 2023-08-08 9:15 ` Ulf Hansson 2023-08-08 9:15 ` Ulf Hansson 2023-08-01 17:35 ` [PATCH 3/5] net: enetc: use EXPORT_SYMBOL_GPL for enetc_phc_index Christoph Hellwig 2023-08-01 17:35 ` Christoph Hellwig 2023-08-01 17:35 ` [PATCH 4/5] rtc: ds1685: use EXPORT_SYMBOL_GPL for ds1685_rtc_poweroff Christoph Hellwig 2023-08-01 17:35 ` Christoph Hellwig 2023-08-01 17:35 ` Christoph Hellwig [this message] 2023-08-01 17:35 ` [PATCH 5/5] modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules Christoph Hellwig 2023-10-18 0:30 ` David Woodhouse 2023-10-18 0:30 ` David Woodhouse 2023-10-18 5:31 ` Christoph Hellwig 2023-10-18 5:31 ` Christoph Hellwig 2023-10-18 18:25 ` Luis Chamberlain 2023-10-18 18:25 ` Luis Chamberlain 2023-08-01 17:45 ` require EXPORT_SYMBOL_GPL symbols for symbol_get v2 Luis Chamberlain 2023-08-01 17:45 ` Luis Chamberlain 2023-08-02 11:56 ` Christoph Hellwig 2023-08-02 11:56 ` Christoph Hellwig 2023-08-02 18:19 ` Luis Chamberlain 2023-08-02 18:19 ` Luis Chamberlain -- strict thread matches above, loose matches on Subject: below -- 2023-07-31 8:38 require EXPORT_SYMBOL_GPL symbols for symbol_get Christoph Hellwig 2023-07-31 8:38 ` [PATCH 5/5] modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules Christoph Hellwig 2023-07-31 8:38 ` Christoph Hellwig 2023-07-31 11:05 ` Greg Kroah-Hartman 2023-07-31 11:05 ` Greg Kroah-Hartman 2023-07-31 18:11 ` Simon Horman 2023-07-31 18:11 ` Simon Horman 2023-07-31 20:38 ` Luis Chamberlain 2023-07-31 20:38 ` Luis Chamberlain
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=20230801173544.1929519-6-hch@lst.de \ --to=hch@lst.de \ --cc=arnd@arndb.de \ --cc=daniel.vetter@ffwll.ch \ --cc=daniel@zonque.org \ --cc=gregkh@linuxfoundation.org \ --cc=haojian.zhuang@gmail.com \ --cc=kumba@gentoo.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mmc@vger.kernel.org \ --cc=linux-modules@vger.kernel.org \ --cc=linux-rtc@vger.kernel.org \ --cc=manuel.lauss@gmail.com \ --cc=mcgrof@kernel.org \ --cc=netdev@vger.kernel.org \ --cc=robert.jarzmik@free.fr \ --cc=ulf.hansson@linaro.org \ --cc=yangbo.lu@nxp.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: linkBe 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.