[PATCH 0/5] fs: ext4: implement opendir, readdir, closedir
Heinrich Schuchardt
xypron.glpk at gmx.de
Thu Nov 7 10:47:38 CET 2024
On 11/7/24 10:31, Michael Nazzareno Trimarchi wrote:
> Hi
>
> On Thu, Nov 7, 2024 at 10:27 AM Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>>
>> On 11/3/24 00:36, 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?
>>>
>>> int ext4fs_opendir(const char *dirname, struct fs_dir_stream **dirsp) {
>>> struct ext4_dir_stream *dirs = NULL;
>>
>> Thank you for your review.
>>
>> We should not set a value that we do not use.
>>
>>> 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) {
>>
>> Yes this line in my code is incorrect.
>>
>
> We need to use valgrind in unit test or we need some code analys to
> automate this process.
> We are always looking for memory leaks in uboot in exit path or we
> need to have alloction funciton that
> automatic free the memory when we go in error path
Coverity probably would have reported this. But I think we only run it
on tags.
This article describes how Valgrind could be used:
https://developers.redhat.com/articles/2022/03/23/use-valgrind-memcheck-custom-memory-manager
Both malloc and LMB would be candidates.
Best regards
Heinrich
>
> Michael
>
>>> 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);
>>
>> Yes, we should avoid a memory leak here.
>>
>> I will send a patch.
>>
>> Best regards
>>
>> Heinrich
>>
>>> }
>>>
>>> if (dir)
>>> ext4fs_free_node(dir, &ext4fs_root->diropen);
>>>
>>> return ret;
>>> }
>>>
>>> Should not be like this?
>>>
>>>> --
>>>> Tom
>>>>
>>>>
>>>
>>>
>>
>
>
More information about the U-Boot
mailing list