| 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) |