[PATCH 01/42] coccinelle: device_attr_show.cocci: update description and warning message

Li Zhijian posted 42 patches 1 year, 11 months ago
Only 3 patches received!
[PATCH 01/42] coccinelle: device_attr_show.cocci: update description and warning message
Posted by Li Zhijian 1 year, 11 months ago
Update them according to latest Documentation/filesystems/sysfs.rst.

CC: Julia Lawall <Julia.Lawall@inria.fr>
CC: Nicolas Palix <nicolas.palix@imag.fr>
CC: cocci@inria.fr
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 scripts/coccinelle/api/device_attr_show.cocci | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/scripts/coccinelle/api/device_attr_show.cocci b/scripts/coccinelle/api/device_attr_show.cocci
index a28dc061653a..a621e9610479 100644
--- a/scripts/coccinelle/api/device_attr_show.cocci
+++ b/scripts/coccinelle/api/device_attr_show.cocci
@@ -1,10 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0-only
 ///
 /// From Documentation/filesystems/sysfs.rst:
-///  show() must not use snprintf() when formatting the value to be
-///  returned to user space. If you can guarantee that an overflow
-///  will never happen you can use sprintf() otherwise you must use
-///  scnprintf().
+/// show() should only use sysfs_emit() or sysfs_emit_at() when formatting
+/// the value to be returned to user space.
 ///
 // Confidence: High
 // Copyright: (C) 2020 Denis Efremov ISPRAS
@@ -46,10 +44,10 @@ ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
 p << r.p;
 @@
 
-coccilib.report.print_report(p[0], "WARNING: use scnprintf or sprintf")
+coccilib.report.print_report(p[0], "WARNING: please use sysfs_emit")
 
 @script: python depends on org@
 p << r.p;
 @@
 
-coccilib.org.print_todo(p[0], "WARNING: use scnprintf or sprintf")
+coccilib.org.print_todo(p[0], "WARNING: please use sysfs_emit")
-- 
2.29.2
Re: [PATCH 01/42] coccinelle: device_attr_show.cocci: update description and warning message
Posted by Julia Lawall 1 year, 11 months ago

On Tue, 16 Jan 2024, Li Zhijian wrote:

> Update them according to latest Documentation/filesystems/sysfs.rst.
>
> CC: Julia Lawall <Julia.Lawall@inria.fr>
> CC: Nicolas Palix <nicolas.palix@imag.fr>
> CC: cocci@inria.fr
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
> ---
>  scripts/coccinelle/api/device_attr_show.cocci | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/scripts/coccinelle/api/device_attr_show.cocci b/scripts/coccinelle/api/device_attr_show.cocci
> index a28dc061653a..a621e9610479 100644
> --- a/scripts/coccinelle/api/device_attr_show.cocci
> +++ b/scripts/coccinelle/api/device_attr_show.cocci
> @@ -1,10 +1,8 @@
>  // SPDX-License-Identifier: GPL-2.0-only
>  ///
>  /// From Documentation/filesystems/sysfs.rst:
> -///  show() must not use snprintf() when formatting the value to be
> -///  returned to user space. If you can guarantee that an overflow
> -///  will never happen you can use sprintf() otherwise you must use
> -///  scnprintf().
> +/// show() should only use sysfs_emit() or sysfs_emit_at() when formatting
> +/// the value to be returned to user space.
>  ///
>  // Confidence: High
>  // Copyright: (C) 2020 Denis Efremov ISPRAS
> @@ -46,10 +44,10 @@ ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
>  p << r.p;
>  @@
>
> -coccilib.report.print_report(p[0], "WARNING: use scnprintf or sprintf")
> +coccilib.report.print_report(p[0], "WARNING: please use sysfs_emit")
>
>  @script: python depends on org@
>  p << r.p;
>  @@
>
> -coccilib.org.print_todo(p[0], "WARNING: use scnprintf or sprintf")
> +coccilib.org.print_todo(p[0], "WARNING: please use sysfs_emit")

Thanks for the suggestion, but it's not really consistent, because the
patch rule still generates a call to scnprintf.  Would it be possible to
fix that up?  Or should it be removed?

thanks,
julia
Re: [PATCH 01/42] coccinelle: device_attr_show.cocci: update description and warning message
Posted by Zhijian Li (Fujitsu) 1 year, 11 months ago

On 19/01/2024 04:26, Julia Lawall wrote:
> 
> 
> On Tue, 16 Jan 2024, Li Zhijian wrote:
> 
>> Update them according to latest Documentation/filesystems/sysfs.rst.
>>
>> CC: Julia Lawall <Julia.Lawall@inria.fr>
>> CC: Nicolas Palix <nicolas.palix@imag.fr>
>> CC: cocci@inria.fr
>> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
>> ---
>>   scripts/coccinelle/api/device_attr_show.cocci | 10 ++++------
>>   1 file changed, 4 insertions(+), 6 deletions(-)
>>
>> diff --git a/scripts/coccinelle/api/device_attr_show.cocci b/scripts/coccinelle/api/device_attr_show.cocci
>> index a28dc061653a..a621e9610479 100644
>> --- a/scripts/coccinelle/api/device_attr_show.cocci
>> +++ b/scripts/coccinelle/api/device_attr_show.cocci
>> @@ -1,10 +1,8 @@
>>   // SPDX-License-Identifier: GPL-2.0-only
>>   ///
>>   /// From Documentation/filesystems/sysfs.rst:
>> -///  show() must not use snprintf() when formatting the value to be
>> -///  returned to user space. If you can guarantee that an overflow
>> -///  will never happen you can use sprintf() otherwise you must use
>> -///  scnprintf().
>> +/// show() should only use sysfs_emit() or sysfs_emit_at() when formatting
>> +/// the value to be returned to user space.
>>   ///
>>   // Confidence: High
>>   // Copyright: (C) 2020 Denis Efremov ISPRAS
>> @@ -46,10 +44,10 @@ ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
>>   p << r.p;
>>   @@
>>
>> -coccilib.report.print_report(p[0], "WARNING: use scnprintf or sprintf")
>> +coccilib.report.print_report(p[0], "WARNING: please use sysfs_emit")
>>
>>   @script: python depends on org@
>>   p << r.p;
>>   @@
>>
>> -coccilib.org.print_todo(p[0], "WARNING: use scnprintf or sprintf")
>> +coccilib.org.print_todo(p[0], "WARNING: please use sysfs_emit")
> 
> Thanks for the suggestion, but it's not really consistent, because the
> patch rule still generates a call to scnprintf.  Would it be possible to
> fix that up?  Or should it be removed?

Good catch, i missed it before.

Let's remove it?  Just simply replacing scnprintf to sysfs_emit is
not enough for the patch method. Because snprintf() vs sysfs_emit()
take different arguments.

I'm not familiar with .cocci, if you know how to write the patch method,
please let me know.


Thanks
Zhijian



> 
> thanks,
> julia
Re: [PATCH 01/42] coccinelle: device_attr_show.cocci: update description and warning message
Posted by Zhijian Li (Fujitsu) 1 year, 11 months ago
Julia,


Just Learned coccinelle from this video https://www.youtube.com/watch?v=16wUxqDf1GA
and post V2[1] to fix MODE=patch, please take another look.

[1] https://lore.kernel.org/lkml/20240119062057.4026888-1-lizhijian@fujitsu.com/T/#u

Thanks
Zhijian



On 19/01/2024 10:53, Li Zhijian wrote:
> 
> 
> On 19/01/2024 04:26, Julia Lawall wrote:
>>
>>
>> On Tue, 16 Jan 2024, Li Zhijian wrote:
>>
>>> Update them according to latest Documentation/filesystems/sysfs.rst.
>>>
>>> CC: Julia Lawall <Julia.Lawall@inria.fr>
>>> CC: Nicolas Palix <nicolas.palix@imag.fr>
>>> CC: cocci@inria.fr
>>> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
>>> ---
>>>   scripts/coccinelle/api/device_attr_show.cocci | 10 ++++------
>>>   1 file changed, 4 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/scripts/coccinelle/api/device_attr_show.cocci b/scripts/coccinelle/api/device_attr_show.cocci
>>> index a28dc061653a..a621e9610479 100644
>>> --- a/scripts/coccinelle/api/device_attr_show.cocci
>>> +++ b/scripts/coccinelle/api/device_attr_show.cocci
>>> @@ -1,10 +1,8 @@
>>>   // SPDX-License-Identifier: GPL-2.0-only
>>>   ///
>>>   /// From Documentation/filesystems/sysfs.rst:
>>> -///  show() must not use snprintf() when formatting the value to be
>>> -///  returned to user space. If you can guarantee that an overflow
>>> -///  will never happen you can use sprintf() otherwise you must use
>>> -///  scnprintf().
>>> +/// show() should only use sysfs_emit() or sysfs_emit_at() when formatting
>>> +/// the value to be returned to user space.
>>>   ///
>>>   // Confidence: High
>>>   // Copyright: (C) 2020 Denis Efremov ISPRAS
>>> @@ -46,10 +44,10 @@ ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
>>>   p << r.p;
>>>   @@
>>>
>>> -coccilib.report.print_report(p[0], "WARNING: use scnprintf or sprintf")
>>> +coccilib.report.print_report(p[0], "WARNING: please use sysfs_emit")
>>>
>>>   @script: python depends on org@
>>>   p << r.p;
>>>   @@
>>>
>>> -coccilib.org.print_todo(p[0], "WARNING: use scnprintf or sprintf")
>>> +coccilib.org.print_todo(p[0], "WARNING: please use sysfs_emit")
>>
>> Thanks for the suggestion, but it's not really consistent, because the
>> patch rule still generates a call to scnprintf.  Would it be possible to
>> fix that up?  Or should it be removed?
> 
> Good catch, i missed it before.
> 
> Let's remove it?  Just simply replacing scnprintf to sysfs_emit is
> not enough for the patch method. Because snprintf() vs sysfs_emit()
> take different arguments.
> 
> I'm not familiar with .cocci, if you know how to write the patch method,
> please let me know.
> 
> 
> Thanks
> Zhijian
> 
> 
> 
>>
>> thanks,
>> julia