From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Smart Date: Mon, 09 Feb 2009 21:39:28 +0000 Subject: Re: [PATCH 1/6] drivers/scsi: introduce missing kfree Message-Id: <4990A290.3030406@emulex.com> List-Id: References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Julia Lawall Cc: "linux-scsi@vger.kernel.org" , "James.Bottomley@HansenPartnership.com" , "linux-kernel@vger.kernel.org" , "kernel-janitors@vger.kernel.org" Acked-by: James Smart -- james s Julia Lawall wrote: > From: Julia Lawall > > Error handling code following a kmalloc should free the allocated data. > > The semantic match that finds the problem is as follows: > (http://www.emn.fr/x-info/coccinelle/) > > // > @r exists@ > local idexpression x; > statement S; > expression E; > identifier f,l; > position p1,p2; > expression *ptr != NULL; > @@ > > ( > if ((x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...)) = NULL) S > | > x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...); > ... > if (x = NULL) S > ) > <... when != x > when != if (...) { <+...x...+> } > x->f = E > ...> > ( > return \(0\|<+...x...+>\|ptr\); > | > return@p2 ...; > ) > > @script:python@ > p1 << r.p1; > p2 << r.p2; > @@ > > print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line) > // > > Signed-off-by: Julia Lawall > --- > drivers/scsi/lpfc/lpfc_els.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c > index a8f30bd..a730248 100644 > --- a/drivers/scsi/lpfc/lpfc_els.c > +++ b/drivers/scsi/lpfc/lpfc_els.c > @@ -5258,6 +5258,7 @@ lpfc_send_els_event(struct lpfc_vport *vport, > sizeof(struct lpfc_name)); > break; > default: > + kfree(els_data); > return; > } > memcpy(els_data->wwpn, &ndlp->nlp_portname, sizeof(struct lpfc_name)); > From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Smart Subject: Re: [PATCH 1/6] drivers/scsi: introduce missing kfree Date: Mon, 9 Feb 2009 16:39:28 -0500 Message-ID: <4990A290.3030406@emulex.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from emulex.emulex.com ([138.239.112.1]:51257 "EHLO emulex.emulex.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754914AbZBIVjn (ORCPT ); Mon, 9 Feb 2009 16:39:43 -0500 In-Reply-To: Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: Julia Lawall Cc: "linux-scsi@vger.kernel.org" , "James.Bottomley@HansenPartnership.com" , "linux-kernel@vger.kernel.org" , "kernel-janitors@vger.kernel.org" Acked-by: James Smart -- james s Julia Lawall wrote: > From: Julia Lawall > > Error handling code following a kmalloc should free the allocated data. > > The semantic match that finds the problem is as follows: > (http://www.emn.fr/x-info/coccinelle/) > > // > @r exists@ > local idexpression x; > statement S; > expression E; > identifier f,l; > position p1,p2; > expression *ptr != NULL; > @@ > > ( > if ((x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...)) == NULL) S > | > x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...); > ... > if (x == NULL) S > ) > <... when != x > when != if (...) { <+...x...+> } > x->f = E > ...> > ( > return \(0\|<+...x...+>\|ptr\); > | > return@p2 ...; > ) > > @script:python@ > p1 << r.p1; > p2 << r.p2; > @@ > > print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line) > // > > Signed-off-by: Julia Lawall > --- > drivers/scsi/lpfc/lpfc_els.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c > index a8f30bd..a730248 100644 > --- a/drivers/scsi/lpfc/lpfc_els.c > +++ b/drivers/scsi/lpfc/lpfc_els.c > @@ -5258,6 +5258,7 @@ lpfc_send_els_event(struct lpfc_vport *vport, > sizeof(struct lpfc_name)); > break; > default: > + kfree(els_data); > return; > } > memcpy(els_data->wwpn, &ndlp->nlp_portname, sizeof(struct lpfc_name)); >