-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/…
…mmarek/kbuild Pull misc kbuild changes from Michal Marek: "The non-critical part of kbuild is small this time: - Three fixes for make deb-pkg - A new coccinelle check One of the deb-pkg fixes is a leftover from the last merge window, hence the merge commit" * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: deb-pkg: Fix building for MIPS big-endian or ARM OABI deb-pkg: Fix cross-building linux-headers package scripts: Coccinelle script for pm_runtime_* return checks with IS_ERR_VALUE deb-pkg: Inhibit initramfs builders if CONFIG_BLK_DEV_INITRD is not set
- Loading branch information
Showing
2 changed files
with
126 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
/// Make sure pm_runtime_* calls does not use unnecessary IS_ERR_VALUE | ||
// | ||
// Keywords: pm_runtime | ||
// Confidence: Medium | ||
// Copyright (C) 2013 Texas Instruments Incorporated - GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Options: --include-headers | ||
|
||
virtual patch | ||
virtual context | ||
virtual org | ||
virtual report | ||
|
||
//---------------------------------------------------------- | ||
// Detection | ||
//---------------------------------------------------------- | ||
|
||
@runtime_bad_err_handle exists@ | ||
expression ret; | ||
@@ | ||
( | ||
ret = \(pm_runtime_idle\| | ||
pm_runtime_suspend\| | ||
pm_runtime_autosuspend\| | ||
pm_runtime_resume\| | ||
pm_request_idle\| | ||
pm_request_resume\| | ||
pm_request_autosuspend\| | ||
pm_runtime_get\| | ||
pm_runtime_get_sync\| | ||
pm_runtime_put\| | ||
pm_runtime_put_autosuspend\| | ||
pm_runtime_put_sync\| | ||
pm_runtime_put_sync_suspend\| | ||
pm_runtime_put_sync_autosuspend\| | ||
pm_runtime_set_active\| | ||
pm_schedule_suspend\| | ||
pm_runtime_barrier\| | ||
pm_generic_runtime_suspend\| | ||
pm_generic_runtime_resume\)(...); | ||
... | ||
IS_ERR_VALUE(ret) | ||
... | ||
) | ||
|
||
//---------------------------------------------------------- | ||
// For context mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on runtime_bad_err_handle && context@ | ||
identifier pm_runtime_api; | ||
expression ret; | ||
@@ | ||
( | ||
ret = pm_runtime_api(...); | ||
... | ||
* IS_ERR_VALUE(ret) | ||
... | ||
) | ||
|
||
//---------------------------------------------------------- | ||
// For patch mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on runtime_bad_err_handle && patch@ | ||
identifier pm_runtime_api; | ||
expression ret; | ||
@@ | ||
( | ||
ret = pm_runtime_api(...); | ||
... | ||
- IS_ERR_VALUE(ret) | ||
+ ret < 0 | ||
... | ||
) | ||
|
||
//---------------------------------------------------------- | ||
// For org and report mode | ||
//---------------------------------------------------------- | ||
|
||
@r depends on runtime_bad_err_handle exists@ | ||
position p1, p2; | ||
identifier pm_runtime_api; | ||
expression ret; | ||
@@ | ||
( | ||
ret = pm_runtime_api@p1(...); | ||
... | ||
IS_ERR_VALUE@p2(ret) | ||
... | ||
) | ||
|
||
@script:python depends on org@ | ||
p1 << r.p1; | ||
p2 << r.p2; | ||
pm_runtime_api << r.pm_runtime_api; | ||
@@ | ||
cocci.print_main(pm_runtime_api,p1) | ||
cocci.print_secs("IS_ERR_VALUE",p2) | ||
@script:python depends on report@ | ||
p1 << r.p1; | ||
p2 << r.p2; | ||
pm_runtime_api << r.pm_runtime_api; | ||
@@ | ||
msg = "%s returns < 0 as error. Unecessary IS_ERR_VALUE at line %s" % (pm_runtime_api, p2[0].line) | ||
coccilib.report.print_report(p1[0],msg) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters