[PATCH] efi_loader: file: set a backend block device for file operations
Heinrich Schuchardt
xypron.glpk at gmx.de
Fri Feb 28 19:13:42 CET 2020
On 2/28/20 1:05 AM, AKASHI Takahiro wrote:
> In the current implementation, set_blk_dev() is called in opening a file,
> but not in opening a directory. This will cause failures at succeeding
> directory operations as the "current" block device remains nullified.
> Adding set_blk_dev() fixes this issue.
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
> ---
> lib/efi_loader/efi_file.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/lib/efi_loader/efi_file.c b/lib/efi_loader/efi_file.c
> index 140116ddc4ac..ba55b2829e03 100644
> --- a/lib/efi_loader/efi_file.c
> +++ b/lib/efi_loader/efi_file.c
> @@ -235,6 +235,9 @@ static struct efi_file_handle *file_open(struct file_system *fs,
> } else {
> fh->isdir = 1;
> strcpy(fh->path, "");
> +
> + if (set_blk_dev(fh))
> + goto error;
In the 'true' path of the if statement is_dir() results in fs_type =
FS_TYPE_ANY. It would be inconsistent to call set_blk_dev() here.
Which "succeeding directory operation" does not call set_blk_dev(fh)?
Where did you observe an error?
Best regards
Heinrich
> }
>
> return &fh->base;
>
More information about the U-Boot
mailing list