Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Chanwoo Choi
Hi Bartlomiej,

On 2018년 08월 29일 21:50, Bartlomiej Zolnierkiewicz wrote:
> 
> Hi Chanwoo,
> 
> On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote:
>> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
>> sysfs") changed the node name to devfreq(x). After this commit, it is not
>> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
>>
>> Add new name attribute in order to get device name.
> 
> Could you please describe the issue encountered in more detail
> (what the old device name is needed for)?

You can check it on mail thread[1].
[1] https://lkml.org/lkml/2018/5/8/1042

>  
>> Cc: sta...@vger.kernel.org
>> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
>> sysfs")
>> Signed-off-by: Chanwoo Choi 
>> ---
>>  drivers/devfreq/devfreq.c | 11 +++
>>  include/linux/devfreq.h   |  3 +++
>>  2 files changed, 14 insertions(+)
>>
>> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
>> index 4c49bb1330b5..2145563d5ee5 100644
>> --- a/drivers/devfreq/devfreq.c
>> +++ b/drivers/devfreq/devfreq.c
>> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>>  }
>>  devfreq->max_freq = devfreq->scaling_max_freq;
>>
>> +devfreq->name = dev_name(devfreq->dev.parent);
> 
> It seems that 'dev' can be used instead of 'devfreq->dev.parent'.

devfreq->dev.parent is same with dev. it doesn't matter.

> 
>> +if (IS_ERR_OR_NULL(devfreq->name))
> 
> Error values are not encoded into pointer returned by dev_name()
> (drivers/base/ code is only checking for pointer being NULL).

OK. I'll just check whether NULL or not.

> 
>> +return -EINVAL;
> 
> This leaks 'devfreq' object and doesn't encode return value into
> pointer returned by devfreq_add_device(), it should be replaced by:

Right. I'll fix it.

> 
>   err = -EINVAL;
>   goto err_dev;
> 
>>  dev_set_name(>dev, "devfreq%d",
>>  atomic_inc_return(_no));
>>  err = device_register(>dev);
> 
> Best regards,
> --
> Bartlomiej Zolnierkiewicz
> Samsung R Institute Poland
> Samsung Electronics
> 
> 
> 


-- 
Best Regards,
Chanwoo Choi
Samsung Electronics


Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Chanwoo Choi
Hi Bartlomiej,

On 2018년 08월 29일 21:50, Bartlomiej Zolnierkiewicz wrote:
> 
> Hi Chanwoo,
> 
> On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote:
>> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
>> sysfs") changed the node name to devfreq(x). After this commit, it is not
>> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
>>
>> Add new name attribute in order to get device name.
> 
> Could you please describe the issue encountered in more detail
> (what the old device name is needed for)?

You can check it on mail thread[1].
[1] https://lkml.org/lkml/2018/5/8/1042

>  
>> Cc: sta...@vger.kernel.org
>> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
>> sysfs")
>> Signed-off-by: Chanwoo Choi 
>> ---
>>  drivers/devfreq/devfreq.c | 11 +++
>>  include/linux/devfreq.h   |  3 +++
>>  2 files changed, 14 insertions(+)
>>
>> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
>> index 4c49bb1330b5..2145563d5ee5 100644
>> --- a/drivers/devfreq/devfreq.c
>> +++ b/drivers/devfreq/devfreq.c
>> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>>  }
>>  devfreq->max_freq = devfreq->scaling_max_freq;
>>
>> +devfreq->name = dev_name(devfreq->dev.parent);
> 
> It seems that 'dev' can be used instead of 'devfreq->dev.parent'.

devfreq->dev.parent is same with dev. it doesn't matter.

> 
>> +if (IS_ERR_OR_NULL(devfreq->name))
> 
> Error values are not encoded into pointer returned by dev_name()
> (drivers/base/ code is only checking for pointer being NULL).

OK. I'll just check whether NULL or not.

> 
>> +return -EINVAL;
> 
> This leaks 'devfreq' object and doesn't encode return value into
> pointer returned by devfreq_add_device(), it should be replaced by:

Right. I'll fix it.

> 
>   err = -EINVAL;
>   goto err_dev;
> 
>>  dev_set_name(>dev, "devfreq%d",
>>  atomic_inc_return(_no));
>>  err = device_register(>dev);
> 
> Best regards,
> --
> Bartlomiej Zolnierkiewicz
> Samsung R Institute Poland
> Samsung Electronics
> 
> 
> 


-- 
Best Regards,
Chanwoo Choi
Samsung Electronics


Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Chanwoo Choi
Dear Greg,

On 2018년 08월 29일 19:57, Greg KH wrote:
> On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote:
>> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
>> sysfs") changed the node name to devfreq(x). After this commit, it is not
>> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
>>
>> Add new name attribute in order to get device name.
>>
>> Cc: sta...@vger.kernel.org
>> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
>> sysfs")
>> Signed-off-by: Chanwoo Choi 
>> ---
>>  drivers/devfreq/devfreq.c | 11 +++
>>  include/linux/devfreq.h   |  3 +++
>>  2 files changed, 14 insertions(+)
>>
>> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
>> index 4c49bb1330b5..2145563d5ee5 100644
>> --- a/drivers/devfreq/devfreq.c
>> +++ b/drivers/devfreq/devfreq.c
>> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>>  }
>>  devfreq->max_freq = devfreq->scaling_max_freq;
>>
>> +devfreq->name = dev_name(devfreq->dev.parent);
>> +if (IS_ERR_OR_NULL(devfreq->name))
>> +return -EINVAL;
>>  dev_set_name(>dev, "devfreq%d",
>>  atomic_inc_return(_no));
>>  err = device_register(>dev);
>> @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev,
>>  }
>>  static DEVICE_ATTR_RO(trans_stat);
>>
>> +static ssize_t name_show(struct device *dev,
>> +struct device_attribute *attr, char *buf)
>> +{
>> +return sprintf(buf, "%s\n", to_devfreq(dev)->name);
>> +}
>> +static DEVICE_ATTR_RO(name);
> 
> You need a new Documentation/ABI/ entry for this.

Thanks for comment. I'll.

Best Regards,
Chanwoo Choi
Samsung Electronics


Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Chanwoo Choi
Dear Greg,

On 2018년 08월 29일 19:57, Greg KH wrote:
> On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote:
>> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
>> sysfs") changed the node name to devfreq(x). After this commit, it is not
>> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
>>
>> Add new name attribute in order to get device name.
>>
>> Cc: sta...@vger.kernel.org
>> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
>> sysfs")
>> Signed-off-by: Chanwoo Choi 
>> ---
>>  drivers/devfreq/devfreq.c | 11 +++
>>  include/linux/devfreq.h   |  3 +++
>>  2 files changed, 14 insertions(+)
>>
>> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
>> index 4c49bb1330b5..2145563d5ee5 100644
>> --- a/drivers/devfreq/devfreq.c
>> +++ b/drivers/devfreq/devfreq.c
>> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>>  }
>>  devfreq->max_freq = devfreq->scaling_max_freq;
>>
>> +devfreq->name = dev_name(devfreq->dev.parent);
>> +if (IS_ERR_OR_NULL(devfreq->name))
>> +return -EINVAL;
>>  dev_set_name(>dev, "devfreq%d",
>>  atomic_inc_return(_no));
>>  err = device_register(>dev);
>> @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev,
>>  }
>>  static DEVICE_ATTR_RO(trans_stat);
>>
>> +static ssize_t name_show(struct device *dev,
>> +struct device_attribute *attr, char *buf)
>> +{
>> +return sprintf(buf, "%s\n", to_devfreq(dev)->name);
>> +}
>> +static DEVICE_ATTR_RO(name);
> 
> You need a new Documentation/ABI/ entry for this.

Thanks for comment. I'll.

Best Regards,
Chanwoo Choi
Samsung Electronics


Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Bartlomiej Zolnierkiewicz


Hi Chanwoo,

On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote:
> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
> sysfs") changed the node name to devfreq(x). After this commit, it is not
> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
> 
> Add new name attribute in order to get device name.

Could you please describe the issue encountered in more detail
(what the old device name is needed for)?
 
> Cc: sta...@vger.kernel.org
> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
> sysfs")
> Signed-off-by: Chanwoo Choi 
> ---
>  drivers/devfreq/devfreq.c | 11 +++
>  include/linux/devfreq.h   |  3 +++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 4c49bb1330b5..2145563d5ee5 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>   }
>   devfreq->max_freq = devfreq->scaling_max_freq;
> 
> + devfreq->name = dev_name(devfreq->dev.parent);

It seems that 'dev' can be used instead of 'devfreq->dev.parent'.

> + if (IS_ERR_OR_NULL(devfreq->name))

Error values are not encoded into pointer returned by dev_name()
(drivers/base/ code is only checking for pointer being NULL).

> + return -EINVAL;

This leaks 'devfreq' object and doesn't encode return value into
pointer returned by devfreq_add_device(), it should be replaced by:

err = -EINVAL;
goto err_dev;

>   dev_set_name(>dev, "devfreq%d",
>   atomic_inc_return(_no));
>   err = device_register(>dev);

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R Institute Poland
Samsung Electronics



Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Bartlomiej Zolnierkiewicz


Hi Chanwoo,

On Wednesday, August 29, 2018 04:34:06 PM Chanwoo Choi wrote:
> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
> sysfs") changed the node name to devfreq(x). After this commit, it is not
> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
> 
> Add new name attribute in order to get device name.

Could you please describe the issue encountered in more detail
(what the old device name is needed for)?
 
> Cc: sta...@vger.kernel.org
> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
> sysfs")
> Signed-off-by: Chanwoo Choi 
> ---
>  drivers/devfreq/devfreq.c | 11 +++
>  include/linux/devfreq.h   |  3 +++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 4c49bb1330b5..2145563d5ee5 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>   }
>   devfreq->max_freq = devfreq->scaling_max_freq;
> 
> + devfreq->name = dev_name(devfreq->dev.parent);

It seems that 'dev' can be used instead of 'devfreq->dev.parent'.

> + if (IS_ERR_OR_NULL(devfreq->name))

Error values are not encoded into pointer returned by dev_name()
(drivers/base/ code is only checking for pointer being NULL).

> + return -EINVAL;

This leaks 'devfreq' object and doesn't encode return value into
pointer returned by devfreq_add_device(), it should be replaced by:

err = -EINVAL;
goto err_dev;

>   dev_set_name(>dev, "devfreq%d",
>   atomic_inc_return(_no));
>   err = device_register(>dev);

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R Institute Poland
Samsung Electronics



Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Greg KH
On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote:
> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
> sysfs") changed the node name to devfreq(x). After this commit, it is not
> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
> 
> Add new name attribute in order to get device name.
> 
> Cc: sta...@vger.kernel.org
> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
> sysfs")
> Signed-off-by: Chanwoo Choi 
> ---
>  drivers/devfreq/devfreq.c | 11 +++
>  include/linux/devfreq.h   |  3 +++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 4c49bb1330b5..2145563d5ee5 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>   }
>   devfreq->max_freq = devfreq->scaling_max_freq;
> 
> + devfreq->name = dev_name(devfreq->dev.parent);
> + if (IS_ERR_OR_NULL(devfreq->name))
> + return -EINVAL;
>   dev_set_name(>dev, "devfreq%d",
>   atomic_inc_return(_no));
>   err = device_register(>dev);
> @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev,
>  }
>  static DEVICE_ATTR_RO(trans_stat);
> 
> +static ssize_t name_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + return sprintf(buf, "%s\n", to_devfreq(dev)->name);
> +}
> +static DEVICE_ATTR_RO(name);

You need a new Documentation/ABI/ entry for this.

thanks,

greg k-h


Re: [PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Greg KH
On Wed, Aug 29, 2018 at 04:34:06PM +0900, Chanwoo Choi wrote:
> commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
> sysfs") changed the node name to devfreq(x). After this commit, it is not
> possible to get the device name through /sys/class/devfreq/devfreq(X)/*.
> 
> Add new name attribute in order to get device name.
> 
> Cc: sta...@vger.kernel.org
> Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
> sysfs")
> Signed-off-by: Chanwoo Choi 
> ---
>  drivers/devfreq/devfreq.c | 11 +++
>  include/linux/devfreq.h   |  3 +++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> index 4c49bb1330b5..2145563d5ee5 100644
> --- a/drivers/devfreq/devfreq.c
> +++ b/drivers/devfreq/devfreq.c
> @@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
>   }
>   devfreq->max_freq = devfreq->scaling_max_freq;
> 
> + devfreq->name = dev_name(devfreq->dev.parent);
> + if (IS_ERR_OR_NULL(devfreq->name))
> + return -EINVAL;
>   dev_set_name(>dev, "devfreq%d",
>   atomic_inc_return(_no));
>   err = device_register(>dev);
> @@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev,
>  }
>  static DEVICE_ATTR_RO(trans_stat);
> 
> +static ssize_t name_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + return sprintf(buf, "%s\n", to_devfreq(dev)->name);
> +}
> +static DEVICE_ATTR_RO(name);

You need a new Documentation/ABI/ entry for this.

thanks,

greg k-h


[PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Chanwoo Choi
commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
sysfs") changed the node name to devfreq(x). After this commit, it is not
possible to get the device name through /sys/class/devfreq/devfreq(X)/*.

Add new name attribute in order to get device name.

Cc: sta...@vger.kernel.org
Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
sysfs")
Signed-off-by: Chanwoo Choi 
---
 drivers/devfreq/devfreq.c | 11 +++
 include/linux/devfreq.h   |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 4c49bb1330b5..2145563d5ee5 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
}
devfreq->max_freq = devfreq->scaling_max_freq;

+   devfreq->name = dev_name(devfreq->dev.parent);
+   if (IS_ERR_OR_NULL(devfreq->name))
+   return -EINVAL;
dev_set_name(>dev, "devfreq%d",
atomic_inc_return(_no));
err = device_register(>dev);
@@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(trans_stat);

+static ssize_t name_show(struct device *dev,
+   struct device_attribute *attr, char *buf)
+{
+   return sprintf(buf, "%s\n", to_devfreq(dev)->name);
+}
+static DEVICE_ATTR_RO(name);
+
 static struct attribute *devfreq_attrs[] = {
_attr_governor.attr,
_attr_available_governors.attr,
@@ -1271,6 +1281,7 @@ static ssize_t trans_stat_show(struct device *dev,
_attr_min_freq.attr,
_attr_max_freq.attr,
_attr_trans_stat.attr,
+   _attr_name.attr,
NULL,
 };
 ATTRIBUTE_GROUPS(devfreq);
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 3aae5b3af87c..f79b5a666102 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -111,6 +111,7 @@ struct devfreq_dev_profile {

 /**
  * struct devfreq - Device devfreq structure
+ * @name:  name of the device
  * @node:  list node - contains the devices with devfreq that have been
  * registered.
  * @lock:  a mutex to protect accessing devfreq.
@@ -146,6 +147,8 @@ struct devfreq_dev_profile {
  * to protect its own private data in void *data as well.
  */
 struct devfreq {
+   const char *name;
+
struct list_head node;

struct mutex lock;
--
1.9.1



[PATCH] PM / devfreq: Add new name attribute for sysfs

2018-08-29 Thread Chanwoo Choi
commit 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for
sysfs") changed the node name to devfreq(x). After this commit, it is not
possible to get the device name through /sys/class/devfreq/devfreq(X)/*.

Add new name attribute in order to get device name.

Cc: sta...@vger.kernel.org
Fixes: 4585fbcb5331 ("PM / devfreq: Modify the device name as devfreq(X) for 
sysfs")
Signed-off-by: Chanwoo Choi 
---
 drivers/devfreq/devfreq.c | 11 +++
 include/linux/devfreq.h   |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 4c49bb1330b5..2145563d5ee5 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -620,6 +620,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
}
devfreq->max_freq = devfreq->scaling_max_freq;

+   devfreq->name = dev_name(devfreq->dev.parent);
+   if (IS_ERR_OR_NULL(devfreq->name))
+   return -EINVAL;
dev_set_name(>dev, "devfreq%d",
atomic_inc_return(_no));
err = device_register(>dev);
@@ -1261,6 +1264,13 @@ static ssize_t trans_stat_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(trans_stat);

+static ssize_t name_show(struct device *dev,
+   struct device_attribute *attr, char *buf)
+{
+   return sprintf(buf, "%s\n", to_devfreq(dev)->name);
+}
+static DEVICE_ATTR_RO(name);
+
 static struct attribute *devfreq_attrs[] = {
_attr_governor.attr,
_attr_available_governors.attr,
@@ -1271,6 +1281,7 @@ static ssize_t trans_stat_show(struct device *dev,
_attr_min_freq.attr,
_attr_max_freq.attr,
_attr_trans_stat.attr,
+   _attr_name.attr,
NULL,
 };
 ATTRIBUTE_GROUPS(devfreq);
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 3aae5b3af87c..f79b5a666102 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -111,6 +111,7 @@ struct devfreq_dev_profile {

 /**
  * struct devfreq - Device devfreq structure
+ * @name:  name of the device
  * @node:  list node - contains the devices with devfreq that have been
  * registered.
  * @lock:  a mutex to protect accessing devfreq.
@@ -146,6 +147,8 @@ struct devfreq_dev_profile {
  * to protect its own private data in void *data as well.
  */
 struct devfreq {
+   const char *name;
+
struct list_head node;

struct mutex lock;
--
1.9.1