On Sun, Feb 13, 2022 at 03:17:27PM +0100, Theo Buehler wrote:
> On Sun, Feb 13, 2022 at 02:30:21PM +0100, Tobias Heider wrote:
> > OF_getproplen() will return -1 if "reset-gpios" is not found which
> > currently causes a panic:
> > 
> > panic: malloc: allocation too large, type = 2, size = 4294967295
> > 
> > Below is a fix.
> 
> There are more of these:
> 
> dev/ofw/ofw_regulator.c:336:    if ((glen = OF_getproplen(node, "gpios")) <= 
> 0)
> dev/ofw/ofw_regulator.c:338:    if ((slen = OF_getproplen(node, "states")) <= 
> 0)
> dev/ofw/ofw_regulator.c:401:    if ((glen = OF_getproplen(node, "gpios")) <= 
> 0)
> dev/ofw/ofw_regulator.c:403:    if ((slen = OF_getproplen(node, "states")) <= 
> 0)
> 
> where glen and slen are size_t and
> 
> arch/sparc64/sparc64/pmap.c:806:        sz = OF_getproplen(memh, "available") 
> + sizeof(struct mem_region);
> 
> with a size_t sz.

another in imxspi

Index: imxspi.c
===================================================================
RCS file: /cvs/src/sys/dev/fdt/imxspi.c,v
retrieving revision 1.3
diff -u -p -r1.3 imxspi.c
--- imxspi.c    31 Oct 2021 15:12:00 -0000      1.3
+++ imxspi.c    13 Feb 2022 14:21:01 -0000
@@ -91,7 +91,7 @@ struct imxspi_softc {
        int                      sc_node;
 
        uint32_t                *sc_gpio;
-       size_t                   sc_gpiolen;
+       int                      sc_gpiolen;
 
        struct rwlock            sc_buslock;
        struct spi_controller    sc_tag;
@@ -179,7 +179,7 @@ imxspi_attachhook(struct device *self)
        clock_enable(sc->sc_node, NULL);
 
        sc->sc_gpiolen = OF_getproplen(sc->sc_node, "cs-gpios");
-       if (sc->sc_gpiolen) {
+       if (sc->sc_gpiolen > 0) {
                sc->sc_gpio = malloc(sc->sc_gpiolen, M_DEVBUF, M_WAITOK);
                OF_getpropintarray(sc->sc_node, "cs-gpios",
                    sc->sc_gpio, sc->sc_gpiolen);

Reply via email to