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

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Sun Nov 3 09:21:30 CET 2024


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.

Michael


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


More information about the U-Boot mailing list