// SPDX-License-Identifier: GPL-2.0 /// Make sure calls to d_find_alias() have a corresponding call to dput(). // // Keywords: d_find_alias, dput // // Confidence: Moderate // URL: http://coccinelle.lip6.fr/ // Options: --include-headers virtual context virtual org virtual patch virtual report @r exists@ local idexpression struct dentry *dent; expression E, E1; statement S1, S2; position p1, p2; @@ ( if (!(dent@p1 = d_find_alias(...))) S1 | dent@p1 = d_find_alias(...) ) <...when != dput(dent) when != if (...) { <+... dput(dent) ...+> } when != true !dent || ... when != dent = E when != E = dent if (!dent || ...) S2 ...> ( return <+...dent...+>; | return @p2 ...; | dent@p2 = E1; | E1 = dent; ) @depends on context@ local idexpression struct dentry *r.dent; position r.p1,r.p2; @@ * dent@p1 = ... ... ( * return@p2 ...; | * dent@p2 ) @script:python depends on org@ p1 << r.p1; p2 << r.p2; @@ cocci.print_main("Missing call to dput()",p1) cocci.print_secs("",p2) @depends on patch@ local idexpression struct dentry *r.dent; position r.p2; @@ ( + dput(dent); return @p2 ...; | + dput(dent); dent@p2 = ...; ) @script:python depends on report@ p1 << r.p1; p2 << r.p2; @@ msg = "Missing call to dput() at line %s." coccilib.report.print_report(p1[0], msg % (p2[0].line))
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
alloc | Folder | 0755 |
|
|
debugfs | Folder | 0755 |
|
|
check_bq27xxx_data.cocci | File | 3.42 KB | 0644 |
|
d_find_alias.cocci | File | 1.28 KB | 0644 |
|
drm-get-put.cocci | File | 1.93 KB | 0644 |
|
err_cast.cocci | File | 1.07 KB | 0644 |
|
kstrdup.cocci | File | 2.4 KB | 0644 |
|
memdup.cocci | File | 1.35 KB | 0644 |
|
memdup_user.cocci | File | 1.28 KB | 0644 |
|
platform_no_drv_owner.cocci | File | 3.78 KB | 0644 |
|
pm_runtime.cocci | File | 2.34 KB | 0644 |
|
ptr_ret.cocci | File | 1.77 KB | 0644 |
|
resource_size.cocci | File | 2.07 KB | 0644 |
|
simple_open.cocci | File | 1.21 KB | 0644 |
|
stream_open.cocci | File | 7.6 KB | 0644 |
|
vma_pages.cocci | File | 1.48 KB | 0644 |
|