2008-06-08 12:57:17

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 1/2] drivers/s390/char/tape_3590.c: introduce missing kfree

From: Julia Lawall <[email protected]>

The semantic match that finds the problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)

@r exists@
expression E,E1;
statement S;
position p1,p2,p3;
@@

E =@p1 \(kmalloc\|kcalloc\|kzalloc\)(...)
... when != E = E1
if (E == NULL || ...) S
... when != E = E1
if@p2 (...) {
... when != kfree(E)
}
... when != E = E1
kfree@p3(E);

@forall@
position r.p2;
expression r.E;
int E1 != 0;
@@

* if@p2 (...) {
... when != kfree(E)
when strict
return E1; }


Signed-off-by: Julia Lawall <[email protected]>
---

diff -u -p a/drivers/s390/char/tape_3590.c b/drivers/s390/char/tape_3590.c
--- a/drivers/s390/char/tape_3590.c
+++ b/drivers/s390/char/tape_3590.c
@@ -1598,7 +1598,7 @@ tape_3590_setup_device(struct tape_devic
rc = tape_3590_read_dev_chars(device, rdc_data);
if (rc) {
DBF_LH(3, "Read device characteristics failed!\n");
- goto fail_kmalloc;
+ goto fail_rdc_data;
}
rc = tape_std_assign(device);
if (rc)


2008-06-09 08:36:54

by Martin Schwidefsky

[permalink] [raw]
Subject: Re: [PATCH 1/2] drivers/s390/char/tape_3590.c: introduce missing kfree

On Sun, 2008-06-08 at 14:56 +0200, Julia Lawall wrote:
> diff -u -p a/drivers/s390/char/tape_3590.c
> b/drivers/s390/char/tape_3590.c
> --- a/drivers/s390/char/tape_3590.c
> +++ b/drivers/s390/char/tape_3590.c
> @@ -1598,7 +1598,7 @@ tape_3590_setup_device(struct tape_devic
> rc = tape_3590_read_dev_chars(device, rdc_data);
> if (rc) {
> DBF_LH(3, "Read device characteristics failed!\n");
> - goto fail_kmalloc;
> + goto fail_rdc_data;
> }
> rc = tape_std_assign(device);
> if (rc)
>

Nice catch! I'll add this to the git390 queue for 2.6.26.

--
blue skies,
Martin.

"Reality continues to ruin my life." - Calvin.