diff mbox

security: Export few symbols referred by other modules

Message ID 1512471537-23865-1-git-send-email-hareeshg@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Hareesh Gundu Dec. 5, 2017, 10:58 a.m. UTC
Export mmap_min_addr and security_mmap_addr() to allow
kernel modules to use them.

Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
---
 security/min_addr.c | 1 +
 security/security.c | 1 +
 2 files changed, 2 insertions(+)

Comments

James Morris Dec. 5, 2017, 12:04 p.m. UTC | #1
On Tue, 5 Dec 2017, Hareesh Gundu wrote:

> Export mmap_min_addr and security_mmap_addr() to allow
> kernel modules to use them.
> 
> Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>

I'm not sure whether this should be EXPORT_SYMBOL or EXPORT_SYMBOL_GPL, as 
this hook was added in 2009, well after EXPORT_SYMBOL_GPL came into being.

Most of the LSM hooks are marked EXPORT_SYMBOL because they were part of 
an existing interface when EXPORT_SYMBOL_GPL was introduced, IIRC.

What do folks think?




> ---
>  security/min_addr.c | 1 +
>  security/security.c | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/security/min_addr.c b/security/min_addr.c
> index 94d2b0c..4653711 100644
> --- a/security/min_addr.c
> +++ b/security/min_addr.c
> @@ -6,6 +6,7 @@
>  
>  /* amount of vm to protect from userspace access by both DAC and the LSM*/
>  unsigned long mmap_min_addr;
> +EXPORT_SYMBOL(mmap_min_addr);
>  /* amount of vm to protect from userspace using CAP_SYS_RAWIO (DAC) */
>  unsigned long dac_mmap_min_addr = CONFIG_DEFAULT_MMAP_MIN_ADDR;
>  /* amount of vm to protect from userspace using the LSM = CONFIG_LSM_MMAP_MIN_ADDR */
> diff --git a/security/security.c b/security/security.c
> index 1cd8526..27874a3 100644
> --- a/security/security.c
> +++ b/security/security.c
> @@ -931,6 +931,7 @@ int security_mmap_addr(unsigned long addr)
>  {
>  	return call_int_hook(mmap_addr, 0, addr);
>  }
> +EXPORT_SYMBOL(security_mmap_addr);
>  
>  int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
>  			    unsigned long prot)
> -- 
> 1.9.1
>
Tetsuo Handa Dec. 5, 2017, 1:21 p.m. UTC | #2
James Morris wrote:
> On Tue, 5 Dec 2017, Hareesh Gundu wrote:
> 
> > Export mmap_min_addr and security_mmap_addr() to allow
> > kernel modules to use them.
> > 
> > Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
> 
> I'm not sure whether this should be EXPORT_SYMBOL or EXPORT_SYMBOL_GPL, as 
> this hook was added in 2009, well after EXPORT_SYMBOL_GPL came into being.
> 
> Most of the LSM hooks are marked EXPORT_SYMBOL because they were part of 
> an existing interface when EXPORT_SYMBOL_GPL was introduced, IIRC.
> 
> What do folks think?
> 
We don't export symbols not used by in-tree modules.
Which in-tree module needs to access these symbols?
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Greg Kroah-Hartman Dec. 5, 2017, 1:34 p.m. UTC | #3
On Tue, Dec 05, 2017 at 11:04:35PM +1100, James Morris wrote:
> On Tue, 5 Dec 2017, Hareesh Gundu wrote:
> 
> > Export mmap_min_addr and security_mmap_addr() to allow
> > kernel modules to use them.

What in-tree kernel module needs these symbols?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hareesh Gundu Dec. 6, 2017, 3:15 p.m. UTC | #4
On 12/5/2017 6:51 PM, Tetsuo Handa wrote:
> James Morris wrote:
>> On Tue, 5 Dec 2017, Hareesh Gundu wrote:
>>
>>> Export mmap_min_addr and security_mmap_addr() to allow
>>> kernel modules to use them.
>>>
>>> Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
Can other folks comment whether this should be EXPORT_SYMBOL or 
EXPORT_SYMBOL_GPL ?
>> I'm not sure whether this should be EXPORT_SYMBOL or EXPORT_SYMBOL_GPL, as
>> this hook was added in 2009, well after EXPORT_SYMBOL_GPL came into being.
>>
>> Most of the LSM hooks are marked EXPORT_SYMBOL because they were part of
>> an existing interface when EXPORT_SYMBOL_GPL was introduced, IIRC.
>>
>> What do folks think?
>>
  That's right, This change is for outside kernel tree modules.
> We don't export symbols not used by in-tree modules.
> Which in-tree module needs to access these symbols?
>

--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Greg Kroah-Hartman Dec. 6, 2017, 3:32 p.m. UTC | #5
On Wed, Dec 06, 2017 at 08:45:01PM +0530, Hareesh Gundu wrote:
> On 12/5/2017 6:51 PM, Tetsuo Handa wrote:
> > James Morris wrote:
> > > On Tue, 5 Dec 2017, Hareesh Gundu wrote:
> > > 
> > > > Export mmap_min_addr and security_mmap_addr() to allow
> > > > kernel modules to use them.
> > > > 
> > > > Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
> Can other folks comment whether this should be EXPORT_SYMBOL or
> EXPORT_SYMBOL_GPL ?

What do you think?

> > > I'm not sure whether this should be EXPORT_SYMBOL or EXPORT_SYMBOL_GPL, as
> > > this hook was added in 2009, well after EXPORT_SYMBOL_GPL came into being.
> > > 
> > > Most of the LSM hooks are marked EXPORT_SYMBOL because they were part of
> > > an existing interface when EXPORT_SYMBOL_GPL was introduced, IIRC.
> > > 
> > > What do folks think?
> > > 
>  That's right, This change is for outside kernel tree modules.

Then it should not be exported at all, sorry.

Please work to get your code merged into the kernel tree and then it can
be exported properly for it.  Odds are, you don't really need these
symbols, as {hint}, no one else does...

sorry,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
James Morris Dec. 7, 2017, 12:10 a.m. UTC | #6
On Wed, 6 Dec 2017, Greg KH wrote:

> On Wed, Dec 06, 2017 at 08:45:01PM +0530, Hareesh Gundu wrote:
> > On 12/5/2017 6:51 PM, Tetsuo Handa wrote:
> > > James Morris wrote:
> > > > On Tue, 5 Dec 2017, Hareesh Gundu wrote:
> > > > 
> > > > > Export mmap_min_addr and security_mmap_addr() to allow
> > > > > kernel modules to use them.
> > > > > 
> > > > > Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
> > Can other folks comment whether this should be EXPORT_SYMBOL or
> > EXPORT_SYMBOL_GPL ?
> 
> What do you think?

The API has some EXPORT_SYMBOLs already and it's probably not useful to 
add any EXPORT_SYMBOL_GPLs on a technical level, as you can't use the API 
with just those.

In terms of documenting developer intent, it may make a difference.

So, what I would propose is that for new hooks which are exported, the 
author can specify which type of export.  In the case of hooks which were 
added after EXPORT_SYMBOL_GPL was merged, and which are only now being 
exported, ask the original author of the hook to decide, otherwise default 
to EXPORT_SYMBOL, which is consistent with the most of the existing API.

For pre-EXPORT_SYMBOL_GPL hooks, if they need to be exported, continue to 
do so as EXPORT_SYMBOL.

And obviously all of the above is contingent on having in-tree users of 
exported hooks.




- James
diff mbox

Patch

diff --git a/security/min_addr.c b/security/min_addr.c
index 94d2b0c..4653711 100644
--- a/security/min_addr.c
+++ b/security/min_addr.c
@@ -6,6 +6,7 @@ 
 
 /* amount of vm to protect from userspace access by both DAC and the LSM*/
 unsigned long mmap_min_addr;
+EXPORT_SYMBOL(mmap_min_addr);
 /* amount of vm to protect from userspace using CAP_SYS_RAWIO (DAC) */
 unsigned long dac_mmap_min_addr = CONFIG_DEFAULT_MMAP_MIN_ADDR;
 /* amount of vm to protect from userspace using the LSM = CONFIG_LSM_MMAP_MIN_ADDR */
diff --git a/security/security.c b/security/security.c
index 1cd8526..27874a3 100644
--- a/security/security.c
+++ b/security/security.c
@@ -931,6 +931,7 @@  int security_mmap_addr(unsigned long addr)
 {
 	return call_int_hook(mmap_addr, 0, addr);
 }
+EXPORT_SYMBOL(security_mmap_addr);
 
 int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
 			    unsigned long prot)