All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: u-boot@lists.denx.de
Subject: Re: [PATCH 1/2] efi_loader: use efi_install_multiple_protocol_interfaces()
Date: Sun, 18 Jun 2023 17:14:46 +0300	[thread overview]
Message-ID: <ZI8RVmrHBTYQIG6l@hades> (raw)
In-Reply-To: <557b7d76-6053-e3d4-1aae-5fd7d0814525@gmx.de>

On Sun, Jun 18, 2023 at 08:03:16AM +0200, Heinrich Schuchardt wrote:
> On 6/15/23 08:57, Ilias Apalodimas wrote:
> > The tcg protocol currently adds and removes protocols with
> > efi_(add/remove)_protocol().  Although this works fine protocol
> > interfaces should be installed using the EFI API functions instead
> > of the internal API ones
> 
> I would prefer the commit message to explicitly state the reason:
> 
> Currently DisconnectController() is not called when uninstalling the
> TCG2 protocol which does not comply to the UEFI specification.
> 
Sure, I can send a v2 updating the description.  We could also add that
using UninstallMultiple  instead of protocl_remove() also removes the
handle if not used

> > 
> > Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > ---
> >   lib/efi_loader/efi_tcg2.c | 8 ++++----
> >   1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c
> > index a83ae7a46cf3..49f8a5e77cbf 100644
> > --- a/lib/efi_loader/efi_tcg2.c
> > +++ b/lib/efi_loader/efi_tcg2.c
> > @@ -1680,8 +1680,8 @@ void tcg2_uninit(void)
> >   	if (!is_tcg2_protocol_installed())
> >   		return;
> > 
> > -	ret = efi_remove_protocol(efi_root, &efi_guid_tcg2_protocol,
> > -				  (void *)&efi_tcg2_protocol);
> > +	ret = efi_uninstall_multiple_protocol_interfaces(efi_root, &efi_guid_tcg2_protocol,
> > +							 &efi_tcg2_protocol, NULL);
> 
> For a single protocol interface efi_uninstall_protocol() is good enough.
> 

I'd rather keep this as is.  Since I am using InstallMultiple() using this
one to remove is easier to read. 

> >   	if (ret != EFI_SUCCESS)
> >   		log_err("Failed to remove EFI TCG2 protocol\n");
> >   }
> > @@ -2507,8 +2507,8 @@ efi_status_t efi_tcg2_register(void)
> >   		goto fail;
> >   	}
> > 
> > -	ret = efi_add_protocol(efi_root, &efi_guid_tcg2_protocol,
> > -			       (void *)&efi_tcg2_protocol);
> > +	ret = efi_install_multiple_protocol_interfaces(&efi_root, &efi_guid_tcg2_protocol,
> > +						       &efi_tcg2_protocol, NULL);
> 
> What is the benefit of this change?
> 

efi_add_protocol() doesn't check for a class in installed device paths and
neither does efi_install_protocol_interface().  But apart from all that I'd
like us to move away from using functions interchangeably when installing a
protocol. 

IMHO (and that's what the second path does) we should slowly replace 
efi_add_protocol -> efi_install_multiple_protocol_interfaces() and make 
efi_add_protocol() static as well.  Similarly we should remove protocols
with efi_uninstall_multiple_protocol_interfaces() and remove the handle
automatically as well. 
I also have more patches which I'll send next week [0] which clean the
whole interface usage further.


[0] https://source.denx.de/u-boot/custodians/u-boot-tpm/-/commit/02ac924bb6db020dc4e4284936069ecd46806542

Thanks
/Ilias

> Best regards
> 
> Heinrich
> 
> >   	if (ret != EFI_SUCCESS) {
> >   		tcg2_uninit();
> >   		goto fail;
> 

      reply	other threads:[~2023-06-18 14:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-15  6:57 [PATCH 1/2] efi_loader: use efi_install_multiple_protocol_interfaces() Ilias Apalodimas
2023-06-15  6:57 ` [PATCH 2/2] efi_loader: make efi_remove_protocol() static Ilias Apalodimas
2023-06-18  6:10   ` Heinrich Schuchardt
2023-06-18  6:03 ` [PATCH 1/2] efi_loader: use efi_install_multiple_protocol_interfaces() Heinrich Schuchardt
2023-06-18 14:14   ` Ilias Apalodimas [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZI8RVmrHBTYQIG6l@hades \
    --to=ilias.apalodimas@linaro.org \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.