CasperSecurity

Current Path : /usr/src/linux-headers-5.15.0-170/scripts/coccinelle/api/
Upload File :
Current File : //usr/src/linux-headers-5.15.0-170/scripts/coccinelle/api/pm_runtime.cocci

// SPDX-License-Identifier: GPL-2.0-only
/// Make sure pm_runtime_* calls does not use unnecessary IS_ERR_VALUE
///
// Keywords: pm_runtime
// Confidence: Medium
// Copyright (C) 2013 Texas Instruments Incorporated -
// URL: http://coccinelle.lip6.fr/
// Options: --include-headers

virtual patch
virtual context
virtual org
virtual report

//----------------------------------------------------------
//  Detection
//----------------------------------------------------------

@runtime_bad_err_handle exists@
expression ret;
position p;
@@
(
ret@p = \(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 context@
identifier pm_runtime_api;
expression ret;
position runtime_bad_err_handle.p;
@@
(
ret@p = pm_runtime_api(...);
...
* IS_ERR_VALUE(ret)
...
)

//----------------------------------------------------------
//  For patch mode
//----------------------------------------------------------

@depends on patch@
identifier pm_runtime_api;
expression ret;
position runtime_bad_err_handle.p;
@@
(
ret@p = pm_runtime_api(...);
...
- IS_ERR_VALUE(ret)
+ ret < 0
...
)

//----------------------------------------------------------
//  For org and report mode
//----------------------------------------------------------

@r depends on (org || report) exists@
position p1, p2;
identifier pm_runtime_api;
expression ret;
position runtime_bad_err_handle.p;
@@
(
ret@p = 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)
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY