[U-Boot] ubifs: memory possibly not freed

Stefan Roese sr at denx.de
Wed Oct 5 12:40:04 CEST 2011


Hi Renaud,

On Friday 30 September 2011 18:42:52 Renaud Barbier wrote:
> Looking at the function ubifs_finddir in the file fs/ubifs/ubifs.c,
> I was wondering if some memory had not been freed before
> the function returns.
> 
> 
> 287 static int ubifs_finddir(struct super_block *sb, char *dirname,
> 288                          unsigned long root_inum, unsigned long *inum)
> 289 {
> ...
> 
> 299         file = kzalloc(sizeof(struct file), 0);
> 300         dentry = kzalloc(sizeof(struct dentry), 0);
> 301         dir = kzalloc(sizeof(struct inode), 0);
> 
> ....
> 336                 if ((strncmp(dirname, (char *)dent->name, nm.len) ==
> 0) &&
> 337                     (strlen(dirname) == nm.len)) {
> 338                         *inum = le64_to_cpu(dent->inum);
> 339                         return 1;
> 340                 }
> 
> Line 339 returns without freeing file, dentry and dir.
> 
> Maybe wrong but could somebody check that.

Yes, you definitely seem to be correct here. Thanks for catching this.

Do you want to sent a patch fixing this? That would be great. Otherwise I'll 
try to come up with a patch soon...

Thanks,
Stefan

--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office at denx.de


More information about the U-Boot mailing list