Browse Source

Silicon/ChaosKeyDxe: Test the ControllerHandle is managed by this driver

Test the @ControllerHandle is not NULL and is actually managed by
this driver.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
Kazuhiko Sakamoto 2 years ago
parent
commit
a4f52afa36

+ 1 - 0
Silicon/Openmoko/ChaosKeyDxe/ChaosKeyDriver.h

@@ -38,6 +38,7 @@ typedef struct {
   CR(a, CHAOSKEY_DEV, Rng, CHAOSKEY_DEV_SIGNATURE)
 
 extern EFI_COMPONENT_NAME2_PROTOCOL gChaosKeyDriverComponentName2;
+extern EFI_DRIVER_BINDING_PROTOCOL  gUsbDriverBinding;
 
 EFI_STATUS
 ChaosKeyInit (

+ 13 - 0
Silicon/Openmoko/ChaosKeyDxe/ComponentName.c

@@ -159,6 +159,19 @@ ChaosKeyGetControllerName (
   OUT CHAR16                                          **ControllerName
   )
 {
+  EFI_STATUS  Status;
+
+  if (!ControllerHandle) {
+    return EFI_INVALID_PARAMETER;
+  }
+
+  Status = EfiTestManagedDevice (ControllerHandle,
+                                 gUsbDriverBinding.DriverBindingHandle,
+                                 &gEfiUsbIoProtocolGuid);
+  if (EFI_ERROR (Status)) {
+    return Status;
+  }
+
   if (ChildHandle != NULL) {
     return EFI_UNSUPPORTED;
   }

+ 0 - 1
Silicon/Openmoko/ChaosKeyDxe/DriverBinding.c

@@ -146,7 +146,6 @@ UsbHwrngDriverBindingStop (
 }
 
 
-STATIC
 EFI_DRIVER_BINDING_PROTOCOL  gUsbDriverBinding = {
   UsbHwrngDriverBindingSupported,
   UsbHwrngDriverBindingStart,