1117397Skan// SPDX-License-Identifier: GPL-2.0-only
2117397Skan///
3132720Skan/// From Documentation/filesystems/sysfs.rst:
4117397Skan///  show() should only use sysfs_emit() or sysfs_emit_at() when formatting
5117397Skan///  the value to be returned to user space.
6117397Skan///
7117397Skan// Confidence: High
8117397Skan// Copyright: (C) 2020 Denis Efremov ISPRAS
9117397Skan// Options: --no-includes --include-headers
10117397Skan//
11117397Skan
12117397Skanvirtual report
13117397Skanvirtual org
14117397Skanvirtual context
15117397Skanvirtual patch
16117397Skan
17117397Skan@r depends on !patch@
18169691Skanidentifier show, dev, attr, buf;
19117397Skanposition p;
20117397Skan@@
21117397Skan
22117397Skanssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
23117397Skan{
24117397Skan	<...
25117397Skan*	return snprintf@p(...);
26117397Skan	...>
27117397Skan}
28117397Skan
29117397Skan@rp depends on patch@
30169691Skanidentifier show, dev, attr, buf;
31169691Skanexpression BUF, SZ, FORMAT;
32169691Skan@@
33169691Skan
34169691Skanssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
35132720Skan{
36132720Skan	<...
37117397Skan	return
38117397Skan-		snprintf(BUF, SZ, FORMAT
39117397Skan+		sysfs_emit(BUF, FORMAT
40117397Skan				,...);
41117397Skan	...>
42117397Skan}
43117397Skan
44117397Skan@script: python depends on report@
45117397Skanp << r.p;
46132720Skan@@
47117397Skan
48117397Skancoccilib.report.print_report(p[0], "WARNING: please use sysfs_emit or sysfs_emit_at")
49117397Skan
50117397Skan@script: python depends on org@
51117397Skanp << r.p;
52@@
53
54coccilib.org.print_todo(p[0], "WARNING: please use sysfs_emit or sysfs_emit_at")
55