> Date: Mon, 14 Feb 2022 01:31:57 +1100
> From: Jonathan Gray <[email protected]>
> 
> 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

ok kettenis@

> 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