From mboxrd@z Thu Jan 1 00:00:00 1970 From: yidong zhang Subject: Re: [PATCH 02/16 v3] pramfs: super operations Date: Mon, 15 Nov 2010 10:27:10 +0800 Message-ID: References: <4CDEA53E.2050602@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: linux-embedded@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, tim.bird@am.sony.com, akpm@linux-foundation.org To: Marco Stornelli Return-path: In-Reply-To: <4CDEA53E.2050602@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org hi Marco > + =A0 =A0 =A0 retval =3D 0; > + out: > + =A0 =A0 =A0 if (retval && sbi->virt_addr) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 iounmap(sbi->virt_addr); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 release_mem_region(sbi->phys_addr, init= size); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 kfree(sbi); > + =A0 =A0 =A0 } > + > + =A0 =A0 =A0 return retval; > +} > + I think kfree(sbi) should not be put here. In case of pram_parse_options failure, sbi should also be freed too. How about change it to the list below? And change some =93goto out=94 branches = to =93goto out_free=94. //=A0 =A0 retval =3D 0; return 0; out: =A0 =A0 =A0 if (retval && sbi->virt_addr) { =A0 =A0 =A0 =A0 =A0 =A0 =A0 iounmap(sbi->virt_addr); =A0 =A0 =A0 =A0 =A0 =A0 =A0 release_mem_region(sbi->phys_addr, initsiz= e); =A0 =A0 =A0 } out_free: =A0 =A0 =A0 =A0 =A0 =A0 =A0 kfree(sbi); =A0 =A0 =A0 return retval; }