[edk2-devel] [PATCH 19/35] NetworkPkg: fix CloseProtocol & UninstallMultipleProtocolInterfaces calls
Philippe Mathieu-Daudé
philmd at redhat.com
Thu Sep 26 12:42:36 UTC 2019
Hi Laszlo,
On 9/17/19 9:49 PM, Laszlo Ersek wrote:
> Both the "ControllerHandle" parameter of CloseProtocol()
Maybe worth adding "of type EFI_CLOSE_PROTOCOL"
> and the "Handle"
> parameter of UninstallMultipleProtocolInterfaces()
"of type EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES"
have type EFI_HANDLE,
> not (EFI_HANDLE*).
>
> This patch fixes actual bugs. The issues have been dormant likely because
> they are on error paths. (Or, in case of TlsAuthConfigDxe, because the
> driver is unloaded likely very infrequently.)
>
> Cc: Jiaxin Wu <jiaxin.wu at intel.com>
> Cc: Siyuan Fu <siyuan.fu at intel.com>
> Signed-off-by: Laszlo Ersek <lersek at redhat.com>
> ---
>
> Notes:
> build-tested only
>
> NetworkPkg/DnsDxe/DnsDriver.c | 4 ++--
> NetworkPkg/IScsiDxe/IScsiConfig.c | 2 +-
> NetworkPkg/Ip4Dxe/Ip4Driver.c | 2 +-
> NetworkPkg/Ip6Dxe/Ip6Driver.c | 2 +-
> NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c | 2 +-
> NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c | 2 +-
> 6 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/NetworkPkg/DnsDxe/DnsDriver.c b/NetworkPkg/DnsDxe/DnsDriver.c
> index 94d072159a4d..ad007da8b7d6 100644
> --- a/NetworkPkg/DnsDxe/DnsDriver.c
> +++ b/NetworkPkg/DnsDxe/DnsDriver.c
> @@ -1145,7 +1145,7 @@ Dns4ServiceBindingCreateChild (
> DnsSb->ConnectUdp->UdpHandle,
> &gEfiUdp4ProtocolGuid,
> gDns4DriverBinding.DriverBindingHandle,
> - ChildHandle
> + *ChildHandle
EFI_CLOSE_PROTOCOL, OK.
> );
>
> gBS->UninstallMultipleProtocolInterfaces (
> @@ -1388,7 +1388,7 @@ Dns6ServiceBindingCreateChild (
> DnsSb->ConnectUdp->UdpHandle,
> &gEfiUdp6ProtocolGuid,
> gDns6DriverBinding.DriverBindingHandle,
> - ChildHandle
> + *ChildHandle
EFI_CLOSE_PROTOCOL, OK.
> );
>
> gBS->UninstallMultipleProtocolInterfaces (
> diff --git a/NetworkPkg/IScsiDxe/IScsiConfig.c b/NetworkPkg/IScsiDxe/IScsiConfig.c
> index b876da7f5ccd..d773849fd3b0 100644
> --- a/NetworkPkg/IScsiDxe/IScsiConfig.c
> +++ b/NetworkPkg/IScsiDxe/IScsiConfig.c
> @@ -3852,7 +3852,7 @@ IScsiConfigFormInit (
> );
> if (CallbackInfo->RegisteredHandle == NULL) {
> gBS->UninstallMultipleProtocolInterfaces (
> - &CallbackInfo->DriverHandle,
> + CallbackInfo->DriverHandle,
EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES, OK.
> &gEfiDevicePathProtocolGuid,
> &mIScsiHiiVendorDevicePath,
> &gEfiHiiConfigAccessProtocolGuid,
> diff --git a/NetworkPkg/Ip4Dxe/Ip4Driver.c b/NetworkPkg/Ip4Dxe/Ip4Driver.c
> index ebd4dec1dfe4..62be8b681a18 100644
> --- a/NetworkPkg/Ip4Dxe/Ip4Driver.c
> +++ b/NetworkPkg/Ip4Dxe/Ip4Driver.c
> @@ -891,7 +891,7 @@ Ip4ServiceBindingCreateChild (
> );
> if (EFI_ERROR (Status)) {
> gBS->UninstallMultipleProtocolInterfaces (
> - ChildHandle,
> + *ChildHandle,
EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES, OK.
> &gEfiIp4ProtocolGuid,
> &IpInstance->Ip4Proto,
> NULL
> diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c
> index 7dc9e45af7b6..63d8428dbced 100644
> --- a/NetworkPkg/Ip6Dxe/Ip6Driver.c
> +++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c
> @@ -888,7 +888,7 @@ Ip6ServiceBindingCreateChild (
> );
> if (EFI_ERROR (Status)) {
> gBS->UninstallMultipleProtocolInterfaces (
> - ChildHandle,
> + *ChildHandle,
EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES, OK.
> &gEfiIp6ProtocolGuid,
> &IpInstance->Ip6Proto,
> NULL
> diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c b/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c
> index ae9e65544a86..06c4e202d3ef 100644
> --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c
> +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c
> @@ -592,7 +592,7 @@ Mtftp4ServiceBindingCreateChild (
> MtftpSb->ConnectUdp->UdpHandle,
> &gEfiUdp4ProtocolGuid,
> gMtftp4DriverBinding.DriverBindingHandle,
> - ChildHandle
> + *ChildHandle
EFI_CLOSE_PROTOCOL, OK.
> );
> goto ON_ERROR;
> }
> diff --git a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c
> index 18ee763002b4..c0870ab9979c 100644
> --- a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c
> +++ b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c
> @@ -39,7 +39,7 @@ TlsAuthConfigDxeUnload (
> ASSERT (PrivateData->Signature == TLS_AUTH_CONFIG_PRIVATE_DATA_SIGNATURE);
>
> gBS->UninstallMultipleProtocolInterfaces (
> - &ImageHandle,
> + ImageHandle,
EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES, OK.
> &gEfiCallerIdGuid,
> PrivateData,
> NULL
>
I'd have split this patch in 2 for easier review (one fixing
EFI_CLOSE_PROTOCOL, another fixing
EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES).
As it or split:
Reviewed-by: Philippe Mathieu-Daudé <philmd at redhat.com>
Regards,
Phil.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#48102): https://edk2.groups.io/g/devel/message/48102
Mute This Topic: https://groups.io/mt/34180220/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list