[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5023F360.2050409@redhat.com>
Date: Thu, 09 Aug 2012 14:29:04 -0300
From: Mauro Carvalho Chehab <mchehab@...hat.com>
To: Fengguang Wu <fengguang.wu@...el.com>
CC: Dave Peterson <dsp@...l.gov>, kernel-janitors@...r.kernel.org,
Doug Thompson <dougthompson@...ssion.com>,
linux-edac@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re:
Hi Fengguang,
Em 09-08-2012 10:54, Fengguang Wu escreveu:
...
> Date: Thu, 9 Aug 2012 21:54:16 +0800
> From: Fengguang Wu <fengguang.wu@...el.com>
> To: Mauro Carvalho Chehab <mchehab@...hat.com>
> Cc: Dave Peterson <dsp@...l.gov>, kernel-janitors@...r.kernel.org,
> Doug Thompson <dougthompson@...ssion.com>, linux-edac@...r.kernel.org,
> linux-kernel@...r.kernel.org
> Message-ID: <20120809135416.GA13100@...alhost>
> MIME-Version: 1.0
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: inline
> User-Agent: Mutt/1.5.21 (2010-09-15)
> X-RedHat-Spam-Score: -5.111 (BAYES_00,MISSING_SUBJECT,RCVD_IN_DNSWL_HI,T_RP_MATCHES_RCVD)
> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24
> X-Scanned-By: MIMEDefang 2.68 on 10.5.110.17
>
> Subject: possible double free in edac_mc_alloc()
> Reply-To:
> User-Agent: Heirloom mailx 12.5 6/20/10
There is an extra space between the email headers and the Subject...
due to that I almost deleted this message, considering it as spam.
>
> Hi,
>
> coccinelle warns about:
>
> + drivers/edac/edac_mc.c:429:9-23: ERROR: reference preceded by free on line 429
>
> and that line does look strange: the 'i' seems like a temporary value
> used in previous loops, and it won't change at all in the current
> loop. Which means the same mci->csrows[i] get freed once and again.
> It might also do double free for the previous kfree(csr) line.
>
> vim +429 drivers/edac/edac_mc.c
>
> 416 if (mci->dimms) {
> 417 for (i = 0; i < tot_dimms; i++)
> 418 kfree(mci->dimms[i]);
> 419 kfree(mci->dimms);
> 420 }
> 421 if (mci->csrows) {
> 422 for (chn = 0; chn < tot_channels; chn++) {
> 423 csr = mci->csrows[chn];
> 424 if (csr) {
> 425 for (chn = 0; chn < tot_channels; chn++)
> 426 kfree(csr->channels[chn]);
> 427 kfree(csr);
> 428 }
> > 429 kfree(mci->csrows[i]);
It should likely be:
kfree(mci->csrows[csr])
instead. This is likely due to one of the countless rebases I had to do on it,
in order to make everybody happy. I suspect that, in the past, this loop was also
using 'i' as the index variable.
Care to write us a patch fixing it? My HD crashed yesterday... I'm somewhat
busy today recovering from it, and doing some backup/restore stuff.
Thanks!
Mauro
> 430 }
> 431 kfree(mci->csrows);
> 432 }
>
> ---
> 0-DAY kernel build testing backend Open Source Technology Centre
> Fengguang Wu <wfg@...ux.intel.com> Intel Corporation
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists