Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1405443 > unrolled thread
| Started by | Julia Lawall <julia.lawall@lip6.fr> |
|---|---|
| First post | 2016-05-23 17:20 +0200 |
| Last post | 2016-05-23 17:20 +0200 |
| Articles | 1 — 1 participant |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v2 1/3] coccinelle: also catch kzfree() issues Julia Lawall <julia.lawall@lip6.fr> - 2016-05-23 17:20 +0200
| From | Julia Lawall <julia.lawall@lip6.fr> |
|---|---|
| Date | 2016-05-23 17:20 +0200 |
| Subject | Re: [PATCH v2 1/3] coccinelle: also catch kzfree() issues |
| Message-ID | <rBZOa-7tz-29@gated-at.bofh.it> |
On Mon, 23 May 2016, Yann Droneaud wrote:
> Since commit 3ef0e5ba4673 ('slab: introduce kzfree()'),
> kfree() is no more the only function to be considered:
> kzfree() should be recognized too.
>
> In particular, kzfree() must not be called on memory
> allocated through devm_*() functions.
>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> Signed-off-by: Yann Droneaud <ydroneaud@opteya.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
> ---
> scripts/coccinelle/free/devm_free.cocci | 2 ++
> scripts/coccinelle/free/ifnullfree.cocci | 4 +++-
> scripts/coccinelle/free/kfree.cocci | 18 +++++++++++++++---
> scripts/coccinelle/free/kfreeaddr.cocci | 6 +++++-
> 4 files changed, 25 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/coccinelle/free/devm_free.cocci b/scripts/coccinelle/free/devm_free.cocci
> index 3d9349012bb3..83c03adec1c5 100644
> --- a/scripts/coccinelle/free/devm_free.cocci
> +++ b/scripts/coccinelle/free/devm_free.cocci
> @@ -48,6 +48,8 @@ position p;
> (
> * kfree@p(x)
> |
> +* kzfree@p(x)
> +|
> * free_irq@p(x)
> |
> * iounmap@p(x)
> diff --git a/scripts/coccinelle/free/ifnullfree.cocci b/scripts/coccinelle/free/ifnullfree.cocci
> index 52bd235286fa..14a4cd98e83b 100644
> --- a/scripts/coccinelle/free/ifnullfree.cocci
> +++ b/scripts/coccinelle/free/ifnullfree.cocci
> @@ -20,6 +20,8 @@ expression E;
> (
> kfree(E);
> |
> + kzfree(E);
> +|
> debugfs_remove(E);
> |
> debugfs_remove_recursive(E);
> @@ -39,7 +41,7 @@ position p;
> @@
>
> * if (E != NULL)
> -* \(kfree@p\|debugfs_remove@p\|debugfs_remove_recursive@p\|
> +* \(kfree@p\|kzfree@p\|debugfs_remove@p\|debugfs_remove_recursive@p\|
> * usb_free_urb@p\|kmem_cache_destroy@p\|mempool_destroy@p\|
> * dma_pool_destroy@p\)(E);
>
> diff --git a/scripts/coccinelle/free/kfree.cocci b/scripts/coccinelle/free/kfree.cocci
> index 577b78056990..ac438da4fd7b 100644
> --- a/scripts/coccinelle/free/kfree.cocci
> +++ b/scripts/coccinelle/free/kfree.cocci
> @@ -20,7 +20,11 @@ expression E;
> position p1;
> @@
>
> -kfree@p1(E)
> +(
> +* kfree@p1(E)
> +|
> +* kzfree@p1(E)
> +)
>
> @print expression@
> constant char [] c;
> @@ -60,7 +64,11 @@ position ok;
> @@
>
> while (1) { ...
> - kfree@ok(E)
> +(
> +* kfree@ok(E)
> +|
> +* kzfree@ok(E)
> +)
> ... when != break;
> when != goto l;
> when forall
> @@ -74,7 +82,11 @@ statement S;
> position free.p1!=loop.ok,p2!={print.p,sz.p};
> @@
>
> -kfree@p1(E,...)
> +(
> +* kfree@p1(E,...)
> +|
> +* kzfree@p1(E,...)
> +)
> ...
> (
> iter(...,subE,...) S // no use
> diff --git a/scripts/coccinelle/free/kfreeaddr.cocci b/scripts/coccinelle/free/kfreeaddr.cocci
> index ce8aacc314cb..d46063b1db8b 100644
> --- a/scripts/coccinelle/free/kfreeaddr.cocci
> +++ b/scripts/coccinelle/free/kfreeaddr.cocci
> @@ -16,7 +16,11 @@ identifier f;
> position p;
> @@
>
> +(
> * kfree@p(&e->f)
> +|
> +* kzfree@p(&e->f)
> +)
>
> @script:python depends on org@
> p << r.p;
> @@ -28,5 +32,5 @@ cocci.print_main("kfree",p)
> p << r.p;
> @@
>
> -msg = "ERROR: kfree of structure field"
> +msg = "ERROR: invalid free of structure field"
> coccilib.report.print_report(p[0],msg)
> --
> 2.7.4
>
>
Back to top | Article view | linux.kernel
csiph-web