From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754739AbZBIVj6 (ORCPT ); Mon, 9 Feb 2009 16:39:58 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755169AbZBIVjq (ORCPT ); Mon, 9 Feb 2009 16:39:46 -0500 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 Message-ID: <4990A290.3030406@emulex.com> Date: Mon, 9 Feb 2009 16:39:28 -0500 From: James Smart User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: Julia Lawall CC: "linux-scsi@vger.kernel.org" , "James.Bottomley@HansenPartnership.com" , "linux-kernel@vger.kernel.org" , "kernel-janitors@vger.kernel.org" Subject: Re: [PATCH 1/6] drivers/scsi: introduce missing kfree References: In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 09 Feb 2009 21:39:35.0769 (UTC) FILETIME=[E6F19C90:01C98AFE] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@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)); >