| // SPDX-License-Identifier: GPL-2.0-only | |
| /// | |
| /// From Documentation/filesystems/sysfs.rst: | |
| /// 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 | |
| // Options: --no-includes --include-headers | |
| // | |
| virtual report | |
| virtual org | |
| virtual context | |
| virtual patch | |
| @r depends on !patch@ | |
| identifier show, dev, attr, buf; | |
| position p; | |
| @@ | |
| ssize_t show(struct device *dev, struct device_attribute *attr, char *buf) | |
| { | |
| <... | |
| * return snprintf@p(...); | |
| ...> | |
| } | |
| @rp depends on patch@ | |
| identifier show, dev, attr, buf; | |
| expression BUF, SZ, FORMAT; | |
| @@ | |
| ssize_t show(struct device *dev, struct device_attribute *attr, char *buf) | |
| { | |
| <... | |
| return | |
| - snprintf(BUF, SZ, FORMAT | |
| + sysfs_emit(BUF, FORMAT | |
| ,...); | |
| ...> | |
| } | |
| @script: python depends on report@ | |
| p << r.p; | |
| @@ | |
| coccilib.report.print_report(p[0], "WARNING: please use sysfs_emit or sysfs_emit_at") | |
| @script: python depends on org@ | |
| p << r.p; | |
| @@ | |
| coccilib.org.print_todo(p[0], "WARNING: please use sysfs_emit or sysfs_emit_at") |