[U-Boot] [PATCH v1] tpm: Fix uclass_first_device error handling
Mario Six
mario.six at gdsys.cc
Wed Mar 30 10:22:16 CEST 2016
uclass_first_device might return NULL for the device despite a zero
return code. Currently, this might lead to null pointer dereferencing,
since the returned device is not properly checked.
Hence, always check if the device returned from uclass_first_device is
NULL and return -ENODEV if it is.
Signed-off-by: Mario Six <mario.six at gdsys.cc>
---
lib/tpm.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/tpm.c b/lib/tpm.c
index f428d45..42aea0a 100644
--- a/lib/tpm.c
+++ b/lib/tpm.c
@@ -245,6 +245,8 @@ static uint32_t tpm_sendrecv_command(const void *command,
ret = uclass_first_device(UCLASS_TPM, &dev);
if (ret)
return ret;
+ if (!dev)
+ return -ENODEV;
err = tpm_xfer(dev, command, tpm_command_size(command),
response, &response_length);
@@ -262,8 +264,10 @@ int tpm_init(void)
struct udevice *dev;
err = uclass_first_device(UCLASS_TPM, &dev);
- if (err || !dev)
+ if (err)
return err;
+ if (!dev)
+ return -ENODEV;
return tpm_open(dev);
}
--
2.7.0.GIT
More information about the U-Boot
mailing list