summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2025-10-28 19:43:19 -0600
committerTom Rini <[email protected]>2025-10-28 19:43:19 -0600
commit96b95a05b7a482b6a21d59dcd6060f414f2f0e58 (patch)
tree398cbd158d031de0f6505f9bff067cd728172a87
parentceb3ef1404ac56d0d9dc6a5717096543ef31b04a (diff)
parent41fd18219fb6625171180a21d0e4f17e9b7b5aa2 (diff)
Merge branch 'master' of git://source.denx.de/u-boot-usb
- Fix assorted issues found by Smatch
-rw-r--r--drivers/usb/common/fsl-dt-fixup.c2
-rw-r--r--drivers/usb/host/ehci-exynos.c3
-rw-r--r--drivers/usb/host/ohci-hcd.c6
-rw-r--r--drivers/usb/host/xhci-exynos5.c3
-rw-r--r--drivers/usb/musb-new/am35x.c4
-rw-r--r--drivers/usb/musb-new/musb_gadget_ep0.c5
-rw-r--r--drivers/usb/musb-new/omap2430.c34
-rw-r--r--drivers/usb/musb-new/ti-musb.c28
-rw-r--r--drivers/usb/ulpi/ulpi.c2
9 files changed, 52 insertions, 35 deletions
diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c
index 6a68bd76c27..55176f7a871 100644
--- a/drivers/usb/common/fsl-dt-fixup.c
+++ b/drivers/usb/common/fsl-dt-fixup.c
@@ -99,7 +99,7 @@ static int fsl_fdt_fixup_usb_erratum(void *blob, const char *prop_erratum,
else
node_name = node_type;
if (strcmp(node_name, controller_type))
- return err;
+ return -EINVAL;
err = fdt_setprop(blob, node_offset, prop_erratum, NULL, 0);
if (err < 0) {
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c
index 1e4a5a0b6f6..e1fc04efd2e 100644
--- a/drivers/usb/host/ehci-exynos.c
+++ b/drivers/usb/host/ehci-exynos.c
@@ -47,8 +47,7 @@ static int ehci_usb_of_to_plat(struct udevice *dev)
{
struct exynos_ehci_plat *plat = dev_get_plat(dev);
const void *blob = gd->fdt_blob;
- unsigned int node;
- int depth;
+ int node, depth;
/*
* Get the base address for XHCI controller from the device node
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index 234a6f3645d..1d6711ccec4 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -1040,9 +1040,11 @@ static void dl_transfer_length(td_t *td)
static void check_status(td_t *td_list)
{
urb_priv_t *lurb_priv = td_list->ed->purb;
- int urb_len = lurb_priv->length;
__u32 *phwHeadP = &td_list->ed->hwHeadP;
- int cc;
+ int cc, urb_len;
+
+ if (lurb_priv)
+ urb_len = lurb_priv->length;
cc = TD_CC_GET(m32_swap(td_list->hwINFO));
if (cc) {
diff --git a/drivers/usb/host/xhci-exynos5.c b/drivers/usb/host/xhci-exynos5.c
index 6a2d422c4b8..c509ce1620a 100644
--- a/drivers/usb/host/xhci-exynos5.c
+++ b/drivers/usb/host/xhci-exynos5.c
@@ -56,8 +56,7 @@ static int xhci_usb_of_to_plat(struct udevice *dev)
{
struct exynos_xhci_plat *plat = dev_get_plat(dev);
const void *blob = gd->fdt_blob;
- unsigned int node;
- int depth;
+ int node, depth;
/*
* Get the base address for XHCI controller from the device node
diff --git a/drivers/usb/musb-new/am35x.c b/drivers/usb/musb-new/am35x.c
index 42bc816e4f1..ca4d798642e 100644
--- a/drivers/usb/musb-new/am35x.c
+++ b/drivers/usb/musb-new/am35x.c
@@ -402,7 +402,7 @@ static int am35x_musb_init(struct musb *musb)
#endif
/* Reset the musb */
- if (data->reset)
+ if (data && data->reset)
data->reset(data->dev);
/* Reset the controller */
@@ -417,7 +417,7 @@ static int am35x_musb_init(struct musb *musb)
musb->isr = am35x_musb_interrupt;
/* clear level interrupt */
- if (data->clear_irq)
+ if (data && data->clear_irq)
data->clear_irq(data->dev);
return 0;
diff --git a/drivers/usb/musb-new/musb_gadget_ep0.c b/drivers/usb/musb-new/musb_gadget_ep0.c
index ea65326ab62..25b1de6e58f 100644
--- a/drivers/usb/musb-new/musb_gadget_ep0.c
+++ b/drivers/usb/musb-new/musb_gadget_ep0.c
@@ -96,6 +96,9 @@ static int service_tx_status_request(
if (!epnum) {
result[0] = 0;
break;
+ } else if (epnum >= MUSB_C_NUM_EPS) {
+ handled = -EINVAL;
+ break;
}
is_in = epnum & USB_DIR_IN;
@@ -107,7 +110,7 @@ static int service_tx_status_request(
}
regs = musb->endpoints[epnum].regs;
- if (epnum >= MUSB_C_NUM_EPS || !ep->desc) {
+ if (!ep->desc) {
handled = -EINVAL;
break;
}
diff --git a/drivers/usb/musb-new/omap2430.c b/drivers/usb/musb-new/omap2430.c
index ba600d01102..7fd6639013a 100644
--- a/drivers/usb/musb-new/omap2430.c
+++ b/drivers/usb/musb-new/omap2430.c
@@ -142,41 +142,49 @@ static int omap2430_musb_of_to_plat(struct udevice *dev)
struct omap2430_musb_plat *plat = dev_get_plat(dev);
const void *fdt = gd->fdt_blob;
int node = dev_of_offset(dev);
+ int ret;
plat->base = (void *)dev_read_addr_ptr(dev);
- plat->musb_config.multipoint = fdtdec_get_int(fdt, node, "multipoint",
- -1);
- if (plat->musb_config.multipoint < 0) {
+ ret = fdtdec_get_int(fdt, node, "multipoint", -1);
+ if (ret < 0) {
pr_err("MUSB multipoint DT entry missing\n");
return -ENOENT;
+ } else {
+ plat->musb_config.multipoint = ret;
}
plat->musb_config.dyn_fifo = 1;
- plat->musb_config.num_eps = fdtdec_get_int(fdt, node, "num-eps", -1);
- if (plat->musb_config.num_eps < 0) {
+ ret = fdtdec_get_int(fdt, node, "num-eps", -1);
+ if (ret < 0) {
pr_err("MUSB num-eps DT entry missing\n");
return -ENOENT;
+ } else {
+ plat->musb_config.num_eps = ret;
}
- plat->musb_config.ram_bits = fdtdec_get_int(fdt, node, "ram-bits", -1);
- if (plat->musb_config.ram_bits < 0) {
+ ret = fdtdec_get_int(fdt, node, "ram-bits", -1);
+ if (ret < 0) {
pr_err("MUSB ram-bits DT entry missing\n");
return -ENOENT;
+ } else {
+ plat->musb_config.ram_bits = ret;
}
- plat->plat.power = fdtdec_get_int(fdt, node, "power", -1);
- if (plat->plat.power < 0) {
+ ret = fdtdec_get_int(fdt, node, "power", -1);
+ if (ret < 0) {
pr_err("MUSB power DT entry missing\n");
return -ENOENT;
+ } else {
+ plat->plat.power = ret;
}
- plat->otg_board_data.interface_type = fdtdec_get_int(fdt, node,
- "interface-type",
- -1);
- if (plat->otg_board_data.interface_type < 0) {
+ ret = fdtdec_get_int(fdt, node, "interface-type", -1);
+ if (ret < 0) {
pr_err("MUSB interface-type DT entry missing\n");
return -ENOENT;
+ } else {
+ plat->otg_board_data.interface_type = ret;
}
#if 0 /* In a perfect world, mode would be set to OTG, mode 3 from DT */
diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
index 967d0953875..bcd31adba52 100644
--- a/drivers/usb/musb-new/ti-musb.c
+++ b/drivers/usb/musb-new/ti-musb.c
@@ -86,6 +86,7 @@ static int ti_musb_of_to_plat(struct udevice *dev)
int phys;
int ctrl_mod;
int usb_index;
+ int ret;
struct musb_hdrc_config *musb_config;
plat->base = devfdt_get_addr_index_ptr(dev, 1);
@@ -108,35 +109,40 @@ static int ti_musb_of_to_plat(struct udevice *dev)
musb_config = malloc(sizeof(struct musb_hdrc_config));
memset(musb_config, 0, sizeof(struct musb_hdrc_config));
- musb_config->multipoint = fdtdec_get_int(fdt, node,
- "mentor,multipoint", -1);
- if (musb_config->multipoint < 0) {
+ ret = fdtdec_get_int(fdt, node, "mentor,multipoint", -1);
+ if (ret < 0) {
pr_err("MUSB multipoint DT entry missing\n");
return -ENOENT;
+ } else {
+ musb_config->multipoint = ret;
}
musb_config->dyn_fifo = 1;
- musb_config->num_eps = fdtdec_get_int(fdt, node, "mentor,num-eps",
- -1);
- if (musb_config->num_eps < 0) {
+ ret = fdtdec_get_int(fdt, node, "mentor,num-eps", -1);
+ if (ret < 0) {
pr_err("MUSB num-eps DT entry missing\n");
return -ENOENT;
+ } else {
+ musb_config->num_eps = ret;
}
- musb_config->ram_bits = fdtdec_get_int(fdt, node, "mentor,ram-bits",
- -1);
- if (musb_config->ram_bits < 0) {
+ ret = fdtdec_get_int(fdt, node, "mentor,ram-bits", -1);
+ if (ret < 0) {
pr_err("MUSB ram-bits DT entry missing\n");
return -ENOENT;
+ } else {
+ musb_config->ram_bits = ret;
}
plat->plat.config = musb_config;
- plat->plat.power = fdtdec_get_int(fdt, node, "mentor,power", -1);
- if (plat->plat.power < 0) {
+ ret = fdtdec_get_int(fdt, node, "mentor,power", -1);
+ if (ret < 0) {
pr_err("MUSB mentor,power DT entry missing\n");
return -ENOENT;
+ } else {
+ plat->plat.power = ret;
}
plat->plat.platform_ops = &musb_dsps_ops;
diff --git a/drivers/usb/ulpi/ulpi.c b/drivers/usb/ulpi/ulpi.c
index 128adcbde13..0e0f0e4983d 100644
--- a/drivers/usb/ulpi/ulpi.c
+++ b/drivers/usb/ulpi/ulpi.c
@@ -127,7 +127,7 @@ int ulpi_set_vbus_indicator(struct ulpi_viewport *ulpi_vp, int external,
if (val == ULPI_ERROR)
return val;
- val = val & ~(ULPI_IFACE_PASSTHRU & ULPI_IFACE_EXTVBUS_COMPLEMENT);
+ val = val & ~(ULPI_IFACE_PASSTHRU | ULPI_IFACE_EXTVBUS_COMPLEMENT);
val |= flags;
val = ulpi_write(ulpi_vp, &ulpi->iface_ctrl, val);
if (val)