mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
coccinelle: device_attr_show: Adapt to the latest Documentation/filesystems/sysfs.rst
Adapt description, warning message and MODE=patch according to the latest Documentation/filesystems/sysfs.rst: > show() should only use sysfs_emit() or sysfs_emit_at() when formatting > the value to be returned to user space. After this patch: When MODE=report, $ make coccicheck COCCI=scripts/coccinelle/api/device_attr_show.cocci M=drivers/hid/hid-picolcd_core.c MODE=report <...snip...> drivers/hid/hid-picolcd_core.c:304:8-16: WARNING: please use sysfs_emit or sysfs_emit_at drivers/hid/hid-picolcd_core.c:259:9-17: WARNING: please use sysfs_emit or sysfs_emit_at When MODE=patch, $ make coccicheck COCCI=scripts/coccinelle/api/device_attr_show.cocci M=drivers/hid/hid-picolcd_core.c MODE=patch <...snip...> diff -u -p a/drivers/hid/hid-picolcd_core.c b/drivers/hid/hid-picolcd_core.c --- a/drivers/hid/hid-picolcd_core.c +++ b/drivers/hid/hid-picolcd_core.c @@ -255,10 +255,12 @@ static ssize_t picolcd_operation_mode_sh { struct picolcd_data *data = dev_get_drvdata(dev); - if (data->status & PICOLCD_BOOTLOADER) - return snprintf(buf, PAGE_SIZE, "[bootloader] lcd\n"); - else - return snprintf(buf, PAGE_SIZE, "bootloader [lcd]\n"); + if (data->status & PICOLCD_BOOTLOADER) { + return sysfs_emit(buf, "[bootloader] lcd\n"); + } + else { + return sysfs_emit(buf, "bootloader [lcd]\n"); + } } static ssize_t picolcd_operation_mode_store(struct device *dev, @@ -301,7 +303,7 @@ static ssize_t picolcd_operation_mode_de { struct picolcd_data *data = dev_get_drvdata(dev); - return snprintf(buf, PAGE_SIZE, "hello world\n"); + return sysfs_emit(buf, "hello world\n"); } static ssize_t picolcd_operation_mode_delay_store(struct device *dev, 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>
This commit is contained in:
parent
556e2d17ca
commit
68ea60a796
@ -1,10 +1,8 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
///
|
///
|
||||||
/// From Documentation/filesystems/sysfs.rst:
|
/// From Documentation/filesystems/sysfs.rst:
|
||||||
/// show() must not use snprintf() when formatting the value to be
|
/// show() should only use sysfs_emit() or sysfs_emit_at() when formatting
|
||||||
/// returned to user space. If you can guarantee that an overflow
|
/// the value to be returned to user space.
|
||||||
/// will never happen you can use sprintf() otherwise you must use
|
|
||||||
/// scnprintf().
|
|
||||||
///
|
///
|
||||||
// Confidence: High
|
// Confidence: High
|
||||||
// Copyright: (C) 2020 Denis Efremov ISPRAS
|
// Copyright: (C) 2020 Denis Efremov ISPRAS
|
||||||
@ -30,15 +28,21 @@ ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||||||
|
|
||||||
@rp depends on patch@
|
@rp depends on patch@
|
||||||
identifier show, dev, attr, buf;
|
identifier show, dev, attr, buf;
|
||||||
|
expression BUF, SZ, FORMAT, STR;
|
||||||
@@
|
@@
|
||||||
|
|
||||||
ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
|
ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
<...
|
<...
|
||||||
|
(
|
||||||
return
|
return
|
||||||
- snprintf
|
- snprintf(BUF, SZ, FORMAT, STR);
|
||||||
+ scnprintf
|
+ sysfs_emit(BUF, FORMAT, STR);
|
||||||
(...);
|
|
|
||||||
|
return
|
||||||
|
- snprintf(BUF, SZ, STR);
|
||||||
|
+ sysfs_emit(BUF, STR);
|
||||||
|
)
|
||||||
...>
|
...>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,10 +50,10 @@ ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
|
|||||||
p << r.p;
|
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 or sysfs_emit_at")
|
||||||
|
|
||||||
@script: python depends on org@
|
@script: python depends on org@
|
||||||
p << r.p;
|
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 or sysfs_emit_at")
|
||||||
|
Loading…
Reference in New Issue
Block a user