[PATCH] efi_loader: file: set a backend block device for file operations
AKASHI Takahiro
takahiro.akashi at linaro.org
Mon Mar 2 02:00:29 CET 2020
On Fri, Feb 28, 2020 at 07:13:42PM +0100, Heinrich Schuchardt wrote:
> 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?
Ah, it would be better to fix my code as I had a mixed use of
efi interface, open_volume(), and U-Boot interfaces, like fs_opendir()/
readdir().
Thanks,
-Takahiro Akashi
>
> Best regards
>
> Heinrich
> > }
> >
> > return &fh->base;
> >
>
More information about the U-Boot
mailing list