summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2020-05-08 18:58:19 -0400
committerTom Rini <[email protected]>2020-05-08 18:58:19 -0400
commitc5c657644bc35fd6b3d6e5517698721e90646b8d (patch)
treeb900de948a5f6fc73d2d1fdafd44288e7830bf93 /drivers
parenta5e609b982a004e009e8ee0aa6066785db425ac2 (diff)
parentbe51c3ca088695e851daf38677d4a8f0fe666f77 (diff)
Merge branch '2020-05-08-assorted-fixes'
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/dwc_ahsata.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/ata/dwc_ahsata.c b/drivers/ata/dwc_ahsata.c
index c2e28fe518e..2bc1de8b98a 100644
--- a/drivers/ata/dwc_ahsata.c
+++ b/drivers/ata/dwc_ahsata.c
@@ -223,7 +223,7 @@ static int ahci_host_init(struct ahci_uc_priv *uc_priv)
/* Wait for COMINIT bit 26 (DIAG_X) in SERR */
timeout = 1000;
- while (!(readl(&port_mmio->serr) | SATA_PORT_SERR_DIAG_X)
+ while (!(readl(&port_mmio->serr) & SATA_PORT_SERR_DIAG_X)
&& --timeout)
;
if (timeout <= 0) {
@@ -450,7 +450,6 @@ static int ahci_port_start(struct ahci_uc_priv *uc_priv, u8 port)
mem = (u32)malloc(AHCI_PORT_PRIV_DMA_SZ + 1024);
if (!mem) {
- free(pp);
printf("No mem for table!\n");
return -ENOMEM;
}
@@ -847,6 +846,9 @@ static int ahci_init_one(int pdev)
struct ahci_uc_priv *uc_priv = NULL;
uc_priv = malloc(sizeof(struct ahci_uc_priv));
+ if (!uc_priv)
+ return -ENOMEM;
+
memset(uc_priv, 0, sizeof(struct ahci_uc_priv));
uc_priv->dev = pdev;
@@ -871,6 +873,8 @@ static int ahci_init_one(int pdev)
return 0;
err_out:
+ if (uc_priv)
+ free(uc_priv);
return rc;
}
@@ -914,6 +918,9 @@ int reset_sata(int dev)
while (readl(&host_mmio->ghc) & SATA_HOST_GHC_HR)
udelay(100);
+ free(uc_priv);
+ memset(&sata_dev_desc[dev], 0, sizeof(struct blk_desc));
+
return 0;
}