Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / scripts / coccinelle / api / device_attr_show.cocci
blobdfcf9304195f3976189b5f4bc4806319597ffc49
1 // SPDX-License-Identifier: GPL-2.0-only
2 ///
3 /// From Documentation/filesystems/sysfs.rst:
4 ///  show() should only use sysfs_emit() or sysfs_emit_at() when formatting
5 ///  the value to be returned to user space.
6 ///
7 // Confidence: High
8 // Copyright: (C) 2020 Denis Efremov ISPRAS
9 // Options: --no-includes --include-headers
12 virtual report
13 virtual org
14 virtual context
15 virtual patch
17 @r depends on !patch@
18 identifier show, dev, attr, buf;
19 position p;
22 ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
24         <...
25 *       return snprintf@p(...);
26         ...>
29 @rp depends on patch@
30 identifier show, dev, attr, buf;
31 expression BUF, SZ, FORMAT;
34 ssize_t show(struct device *dev, struct device_attribute *attr, char *buf)
36         <...
37         return
38 -               snprintf(BUF, SZ, FORMAT
39 +               sysfs_emit(BUF, FORMAT
40                                 ,...);
41         ...>
44 @script: python depends on report@
45 p << r.p;
48 coccilib.report.print_report(p[0], "WARNING: please use sysfs_emit or sysfs_emit_at")
50 @script: python depends on org@
51 p << r.p;
54 coccilib.org.print_todo(p[0], "WARNING: please use sysfs_emit or sysfs_emit_at")