91 lines
1.1 KiB
Plaintext
91 lines
1.1 KiB
Plaintext
virtual patch
|
|
virtual report
|
|
|
|
@depends on patch@
|
|
expression base, dev, res;
|
|
@@
|
|
|
|
-base = devm_request_and_ioremap(dev, res);
|
|
+base = devm_ioremap_resource(dev, res);
|
|
...
|
|
if (
|
|
-base == NULL
|
|
+IS_ERR(base)
|
|
|| ...) {
|
|
<...
|
|
- return ...;
|
|
+ return PTR_ERR(base);
|
|
...>
|
|
}
|
|
|
|
@depends on patch@
|
|
expression e, E, ret;
|
|
identifier l;
|
|
@@
|
|
|
|
e = devm_ioremap_resource(...);
|
|
...
|
|
if (IS_ERR(e) || ...) {
|
|
... when any
|
|
- ret = E;
|
|
+ ret = PTR_ERR(e);
|
|
...
|
|
(
|
|
return ret;
|
|
|
|
|
goto l;
|
|
)
|
|
}
|
|
|
|
@depends on patch@
|
|
expression e;
|
|
@@
|
|
|
|
e = devm_ioremap_resource(...);
|
|
...
|
|
if (IS_ERR(e) || ...) {
|
|
...
|
|
- \(dev_dbg\|dev_err\|pr_debug\|pr_err\|DRM_ERROR\)(...);
|
|
...
|
|
}
|
|
|
|
@depends on patch@
|
|
expression e;
|
|
identifier l;
|
|
@@
|
|
|
|
e = devm_ioremap_resource(...);
|
|
...
|
|
if (IS_ERR(e) || ...)
|
|
-{
|
|
(
|
|
return ...;
|
|
|
|
|
goto l;
|
|
)
|
|
-}
|
|
|
|
@r depends on report@
|
|
expression e;
|
|
identifier l;
|
|
position p1;
|
|
@@
|
|
|
|
*e = devm_request_and_ioremap@p1(...);
|
|
...
|
|
if (e == NULL || ...) {
|
|
...
|
|
(
|
|
return ...;
|
|
|
|
|
goto l;
|
|
)
|
|
}
|
|
|
|
@script:python depends on r@
|
|
p1 << r.p1;
|
|
@@
|
|
|
|
msg = "ERROR: deprecated devm_request_and_ioremap() API used on line %s" % (p1[0].line)
|
|
coccilib.report.print_report(p1[0], msg)
|