[U-Boot] [PATCH 2/3] dm: sata: add null pointer check for dev

Marcel Ziswiler marcel at ziswiler.com
Thu Jan 24 14:29:56 UTC 2019


From: Marcel Ziswiler <marcel.ziswiler at toradex.com>

Given ahci_get_ops() being a macro not checking anything make sure we
only call it if we do indeed have a dev pointer.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>

---

 drivers/ata/sata.c | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/ata/sata.c b/drivers/ata/sata.c
index e384b805b2..4e41f09c87 100644
--- a/drivers/ata/sata.c
+++ b/drivers/ata/sata.c
@@ -20,9 +20,14 @@ struct blk_desc sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
 
 int sata_reset(struct udevice *dev)
 {
-	struct ahci_ops *ops = ahci_get_ops(dev);
+	struct ahci_ops *ops = NULL;
 
-	if (!ops->reset)
+	if (!dev)
+		return -ENODEV;
+
+	ops = ahci_get_ops(dev);
+
+	if (!ops || !ops->reset)
 		return -ENOSYS;
 
 	return ops->reset(dev);
@@ -30,9 +35,14 @@ int sata_reset(struct udevice *dev)
 
 int sata_dm_port_status(struct udevice *dev, int port)
 {
-	struct ahci_ops *ops = ahci_get_ops(dev);
+	struct ahci_ops *ops = NULL;
+
+	if (!dev)
+		return -ENODEV;
 
-	if (!ops->port_status)
+	ops = ahci_get_ops(dev);
+
+	if (!ops || !ops->port_status)
 		return -ENOSYS;
 
 	return ops->port_status(dev, port);
@@ -40,9 +50,14 @@ int sata_dm_port_status(struct udevice *dev, int port)
 
 int sata_scan(struct udevice *dev)
 {
-	struct ahci_ops *ops = ahci_get_ops(dev);
+	struct ahci_ops *ops = NULL;
+
+	if (!dev)
+		return -ENODEV;
+
+	ops = ahci_get_ops(dev);
 
-	if (!ops->scan)
+	if (!ops || !ops->scan)
 		return -ENOSYS;
 
 	return ops->scan(dev);
-- 
2.20.1



More information about the U-Boot mailing list