linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] nvmem: core: make default user binary file root-access only
@ 2015-10-07 16:35 Srinivas Kandagatla
  2015-10-07 16:50 ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Srinivas Kandagatla @ 2015-10-07 16:35 UTC (permalink / raw)
  To: linux-arm-kernel

As required by many providers like at24/at25/mxs-ocotp/qfprom, which would
want to allow root-only to read/write the nvmem content.
So making the defaults to be root-only access which can prevent normal
users from reading the nvmem data.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
---
 drivers/nvmem/core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
index 6fd4e5a..4d2e476 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -112,7 +112,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
 static struct bin_attribute bin_attr_rw_nvmem = {
 	.attr	= {
 		.name	= "nvmem",
-		.mode	= S_IWUSR | S_IRUGO,
+		.mode	= S_IWUSR | S_IRUSR,
 	},
 	.read	= bin_attr_nvmem_read,
 	.write	= bin_attr_nvmem_write,
@@ -136,7 +136,7 @@ static const struct attribute_group *nvmem_rw_dev_groups[] = {
 static struct bin_attribute bin_attr_ro_nvmem = {
 	.attr	= {
 		.name	= "nvmem",
-		.mode	= S_IRUGO,
+		.mode	= S_IRUSR,
 	},
 	.read	= bin_attr_nvmem_read,
 };
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH] nvmem: core: make default user binary file root-access only
  2015-10-07 16:35 [PATCH] nvmem: core: make default user binary file root-access only Srinivas Kandagatla
@ 2015-10-07 16:50 ` Greg KH
  2015-10-07 17:01   ` Srinivas Kandagatla
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2015-10-07 16:50 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Oct 07, 2015 at 05:35:14PM +0100, Srinivas Kandagatla wrote:
> As required by many providers like at24/at25/mxs-ocotp/qfprom, which would
> want to allow root-only to read/write the nvmem content.
> So making the defaults to be root-only access which can prevent normal
> users from reading the nvmem data.
> 
> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> ---
>  drivers/nvmem/core.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> index 6fd4e5a..4d2e476 100644
> --- a/drivers/nvmem/core.c
> +++ b/drivers/nvmem/core.c
> @@ -112,7 +112,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
>  static struct bin_attribute bin_attr_rw_nvmem = {
>  	.attr	= {
>  		.name	= "nvmem",
> -		.mode	= S_IWUSR | S_IRUGO,
> +		.mode	= S_IWUSR | S_IRUSR,
>  	},
>  	.read	= bin_attr_nvmem_read,
>  	.write	= bin_attr_nvmem_write,
> @@ -136,7 +136,7 @@ static const struct attribute_group *nvmem_rw_dev_groups[] = {
>  static struct bin_attribute bin_attr_ro_nvmem = {
>  	.attr	= {
>  		.name	= "nvmem",
> -		.mode	= S_IRUGO,
> +		.mode	= S_IRUSR,
>  	},
>  	.read	= bin_attr_nvmem_read,
>  };

How about using BIN_ATTR_RO() and friends instead, that way I _know_ you
got the permissions correct as it's impossible to get them wrong by
using those macros.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] nvmem: core: make default user binary file root-access only
  2015-10-07 16:50 ` Greg KH
@ 2015-10-07 17:01   ` Srinivas Kandagatla
  2015-10-07 17:12     ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Srinivas Kandagatla @ 2015-10-07 17:01 UTC (permalink / raw)
  To: linux-arm-kernel



On 07/10/15 17:50, Greg KH wrote:
> On Wed, Oct 07, 2015 at 05:35:14PM +0100, Srinivas Kandagatla wrote:
>> As required by many providers like at24/at25/mxs-ocotp/qfprom, which would
>> want to allow root-only to read/write the nvmem content.
>> So making the defaults to be root-only access which can prevent normal
>> users from reading the nvmem data.
>>
>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>> ---
>>   drivers/nvmem/core.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
>> index 6fd4e5a..4d2e476 100644
>> --- a/drivers/nvmem/core.c
>> +++ b/drivers/nvmem/core.c
>> @@ -112,7 +112,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
>>   static struct bin_attribute bin_attr_rw_nvmem = {
>>   	.attr	= {
>>   		.name	= "nvmem",
>> -		.mode	= S_IWUSR | S_IRUGO,
>> +		.mode	= S_IWUSR | S_IRUSR,
>>   	},
>>   	.read	= bin_attr_nvmem_read,
>>   	.write	= bin_attr_nvmem_write,
>> @@ -136,7 +136,7 @@ static const struct attribute_group *nvmem_rw_dev_groups[] = {
>>   static struct bin_attribute bin_attr_ro_nvmem = {
>>   	.attr	= {
>>   		.name	= "nvmem",
>> -		.mode	= S_IRUGO,
>> +		.mode	= S_IRUSR,
>>   	},
>>   	.read	= bin_attr_nvmem_read,
>>   };
>
> How about using BIN_ATTR_RO() and friends instead, that way I _know_ you
> got the permissions correct as it's impossible to get them wrong by
> using those macros.
Yes, that sounds good, but there are no macros for just "S_IRUSR" or 
"(S_IWUSR | S_IRUSR)" in ./include/linux/sysfs.h


--srini

>
> thanks,
>
> greg k-h
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] nvmem: core: make default user binary file root-access only
  2015-10-07 17:01   ` Srinivas Kandagatla
@ 2015-10-07 17:12     ` Greg KH
  2015-10-07 17:26       ` Srinivas Kandagatla
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2015-10-07 17:12 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Oct 07, 2015 at 06:01:03PM +0100, Srinivas Kandagatla wrote:
> 
> 
> On 07/10/15 17:50, Greg KH wrote:
> >On Wed, Oct 07, 2015 at 05:35:14PM +0100, Srinivas Kandagatla wrote:
> >>As required by many providers like at24/at25/mxs-ocotp/qfprom, which would
> >>want to allow root-only to read/write the nvmem content.
> >>So making the defaults to be root-only access which can prevent normal
> >>users from reading the nvmem data.
> >>
> >>Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> >>---
> >>  drivers/nvmem/core.c | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >>diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> >>index 6fd4e5a..4d2e476 100644
> >>--- a/drivers/nvmem/core.c
> >>+++ b/drivers/nvmem/core.c
> >>@@ -112,7 +112,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
> >>  static struct bin_attribute bin_attr_rw_nvmem = {
> >>  	.attr	= {
> >>  		.name	= "nvmem",
> >>-		.mode	= S_IWUSR | S_IRUGO,
> >>+		.mode	= S_IWUSR | S_IRUSR,
> >>  	},
> >>  	.read	= bin_attr_nvmem_read,
> >>  	.write	= bin_attr_nvmem_write,
> >>@@ -136,7 +136,7 @@ static const struct attribute_group *nvmem_rw_dev_groups[] = {
> >>  static struct bin_attribute bin_attr_ro_nvmem = {
> >>  	.attr	= {
> >>  		.name	= "nvmem",
> >>-		.mode	= S_IRUGO,
> >>+		.mode	= S_IRUSR,
> >>  	},
> >>  	.read	= bin_attr_nvmem_read,
> >>  };
> >
> >How about using BIN_ATTR_RO() and friends instead, that way I _know_ you
> >got the permissions correct as it's impossible to get them wrong by
> >using those macros.
> Yes, that sounds good, but there are no macros for just "S_IRUSR" or
> "(S_IWUSR | S_IRUSR)" in ./include/linux/sysfs.h

Then that means you are trying to do something "odd" and you shouldn't
be doing that :)

Use the standard attribute permissions (RO, RW), as those are the
"safest" and what you really want to be using here, as you already are.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] nvmem: core: make default user binary file root-access only
  2015-10-07 17:12     ` Greg KH
@ 2015-10-07 17:26       ` Srinivas Kandagatla
  2015-10-07 17:38         ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Srinivas Kandagatla @ 2015-10-07 17:26 UTC (permalink / raw)
  To: linux-arm-kernel



On 07/10/15 18:12, Greg KH wrote:
> On Wed, Oct 07, 2015 at 06:01:03PM +0100, Srinivas Kandagatla wrote:
>>
>>
>> On 07/10/15 17:50, Greg KH wrote:
>>> On Wed, Oct 07, 2015 at 05:35:14PM +0100, Srinivas Kandagatla wrote:
>>>> As required by many providers like at24/at25/mxs-ocotp/qfprom, which would
>>>> want to allow root-only to read/write the nvmem content.
>>>> So making the defaults to be root-only access which can prevent normal
>>>> users from reading the nvmem data.
>>>>
>>>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>>>> ---
>>>>   drivers/nvmem/core.c | 4 ++--
>>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
>>>> index 6fd4e5a..4d2e476 100644
>>>> --- a/drivers/nvmem/core.c
>>>> +++ b/drivers/nvmem/core.c
>>>> @@ -112,7 +112,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
>>>>   static struct bin_attribute bin_attr_rw_nvmem = {
>>>>   	.attr	= {
>>>>   		.name	= "nvmem",
>>>> -		.mode	= S_IWUSR | S_IRUGO,
>>>> +		.mode	= S_IWUSR | S_IRUSR,
>>>>   	},
>>>>   	.read	= bin_attr_nvmem_read,
>>>>   	.write	= bin_attr_nvmem_write,
>>>> @@ -136,7 +136,7 @@ static const struct attribute_group *nvmem_rw_dev_groups[] = {
>>>>   static struct bin_attribute bin_attr_ro_nvmem = {
>>>>   	.attr	= {
>>>>   		.name	= "nvmem",
>>>> -		.mode	= S_IRUGO,
>>>> +		.mode	= S_IRUSR,
>>>>   	},
>>>>   	.read	= bin_attr_nvmem_read,
>>>>   };
>>>
>>> How about using BIN_ATTR_RO() and friends instead, that way I _know_ you
>>> got the permissions correct as it's impossible to get them wrong by
>>> using those macros.
>> Yes, that sounds good, but there are no macros for just "S_IRUSR" or
>> "(S_IWUSR | S_IRUSR)" in ./include/linux/sysfs.h
>
> Then that means you are trying to do something "odd" and you shouldn't
> be doing that :)
>
The requirement originally came from a discussion regarding file 
permissions set by at24 (drivers/mis/eeprom/at24.c) vs nvmem.

at24 driver sets the permission of root-only read/write, which is 
different to what nvmem sets as default.

So this patch was primarily make nvmem framework inline with what 
at24/at25 does.

Other argument was regarding the content of the nvmem which could have 
things like keys and normal user should not be allowed read it.

--srini
> Use the standard attribute permissions (RO, RW), as those are the
> "safest" and what you really want to be using here, as you already are.
>

> thanks,
>
> greg k-h
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] nvmem: core: make default user binary file root-access only
  2015-10-07 17:26       ` Srinivas Kandagatla
@ 2015-10-07 17:38         ` Greg KH
  0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2015-10-07 17:38 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Oct 07, 2015 at 06:26:02PM +0100, Srinivas Kandagatla wrote:
> 
> 
> On 07/10/15 18:12, Greg KH wrote:
> >On Wed, Oct 07, 2015 at 06:01:03PM +0100, Srinivas Kandagatla wrote:
> >>
> >>
> >>On 07/10/15 17:50, Greg KH wrote:
> >>>On Wed, Oct 07, 2015 at 05:35:14PM +0100, Srinivas Kandagatla wrote:
> >>>>As required by many providers like at24/at25/mxs-ocotp/qfprom, which would
> >>>>want to allow root-only to read/write the nvmem content.
> >>>>So making the defaults to be root-only access which can prevent normal
> >>>>users from reading the nvmem data.
> >>>>
> >>>>Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> >>>>---
> >>>>  drivers/nvmem/core.c | 4 ++--
> >>>>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>>>
> >>>>diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
> >>>>index 6fd4e5a..4d2e476 100644
> >>>>--- a/drivers/nvmem/core.c
> >>>>+++ b/drivers/nvmem/core.c
> >>>>@@ -112,7 +112,7 @@ static ssize_t bin_attr_nvmem_write(struct file *filp, struct kobject *kobj,
> >>>>  static struct bin_attribute bin_attr_rw_nvmem = {
> >>>>  	.attr	= {
> >>>>  		.name	= "nvmem",
> >>>>-		.mode	= S_IWUSR | S_IRUGO,
> >>>>+		.mode	= S_IWUSR | S_IRUSR,
> >>>>  	},
> >>>>  	.read	= bin_attr_nvmem_read,
> >>>>  	.write	= bin_attr_nvmem_write,
> >>>>@@ -136,7 +136,7 @@ static const struct attribute_group *nvmem_rw_dev_groups[] = {
> >>>>  static struct bin_attribute bin_attr_ro_nvmem = {
> >>>>  	.attr	= {
> >>>>  		.name	= "nvmem",
> >>>>-		.mode	= S_IRUGO,
> >>>>+		.mode	= S_IRUSR,
> >>>>  	},
> >>>>  	.read	= bin_attr_nvmem_read,
> >>>>  };
> >>>
> >>>How about using BIN_ATTR_RO() and friends instead, that way I _know_ you
> >>>got the permissions correct as it's impossible to get them wrong by
> >>>using those macros.
> >>Yes, that sounds good, but there are no macros for just "S_IRUSR" or
> >>"(S_IWUSR | S_IRUSR)" in ./include/linux/sysfs.h
> >
> >Then that means you are trying to do something "odd" and you shouldn't
> >be doing that :)
> >
> The requirement originally came from a discussion regarding file permissions
> set by at24 (drivers/mis/eeprom/at24.c) vs nvmem.
> 
> at24 driver sets the permission of root-only read/write, which is different
> to what nvmem sets as default.
> 
> So this patch was primarily make nvmem framework inline with what at24/at25
> does.

Doesn't sound like a good idea, take this time to fix that lapse in
security :)

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-10-07 17:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-07 16:35 [PATCH] nvmem: core: make default user binary file root-access only Srinivas Kandagatla
2015-10-07 16:50 ` Greg KH
2015-10-07 17:01   ` Srinivas Kandagatla
2015-10-07 17:12     ` Greg KH
2015-10-07 17:26       ` Srinivas Kandagatla
2015-10-07 17:38         ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).