[PATCH 0/5] fs: ext4: implement opendir, readdir, closedir

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Thu Nov 7 10:11:54 CET 2024


Hi Tom

On Sun, Nov 3, 2024 at 9:21 AM Michael Nazzareno Trimarchi
<michael at amarulasolutions.com> wrote:
>
> Hi
>
> Il dom 3 nov 2024, 00:53 Tom Rini <trini at konsulko.com> ha scritto:
>>
>> On Sun, Nov 03, 2024 at 12:36:38AM +0100, Michael Nazzareno Trimarchi wrote:
>> > Hi Tom
>> >
>> > On Sun, Nov 3, 2024 at 12:26 AM Tom Rini <trini at konsulko.com> wrote:
>> > >
>> > > On Sat, 26 Oct 2024 08:40:43 +0200, Heinrich Schuchardt wrote:
>> > >
>> > > > With this series opendir, readdir, closedir are implemented for ext4.
>> > > > These functions are needed for the UEFI sub-system to interact with
>> > > > the ext4 file system.
>> > > >
>> > > > To reduce code growth the functions are reused to implement the ls
>> > > > command for ext4.
>> > > >
>> > > > [...]
>> > >
>> > > Applied to local tree/v2-tidy-test-dir, thanks!
>> > >
>> > Am I sleeping?
>>
>> ... I always forget b4 compares with checked out branch, that should
>> have been master.
>>
>> > int ext4fs_opendir(const char *dirname, struct fs_dir_stream **dirsp) {
>> >     struct ext4_dir_stream *dirs = NULL;
>> >     struct ext2fs_node *dir = NULL;
>> >     int ret;
>> >
>> >     *dirsp = NULL;
>> >
>> >     dirs = calloc(1, sizeof(struct ext4_dir_stream));
>> >     if (!dirs)
>> >         return -ENOMEM;
>> >
>> >     dirs->dirname = strdup(dirname);
>> >     if (!dirs->dirname) {
>> >         free(dirs);
>> >         return -ENOMEM;
>> >     }
>> >
>> >     ret = ext4fs_find_file(dirname, &ext4fs_root->diropen, &dir,
>> > FILETYPE_DIRECTORY);
>> >
>> >     if (ret == 1) {
>> >         ret = 0;
>> >         *dirsp = (struct fs_dir_stream *)dirs;
>> >     } else {
>> >         ret = -ENOENT;
>> >         free(dirs->dirname);
>> >         free(dirs);
>
>
> I have add in this path the free of dirs, because according to the code I can see from this email is not reference anymore and anyway according to what I have commented already moving allocation of dirs later make the code a bit simpler.
>

There are few leaks in this function. I have fixed, can you take a
look again on what you merge?

Michael

> Michael
>
>
>> >     }
>> >
>> >     if (dir)
>> >         ext4fs_free_node(dir, &ext4fs_root->diropen);
>> >
>> >     return ret;
>> > }
>> >
>> > Should not be like this?
>>
>> Please elaborate?
>>
>> --
>> Tom



-- 
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
michael at amarulasolutions.com
__________________________________

Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
info at amarulasolutions.com
www.amarulasolutions.com


More information about the U-Boot mailing list