Module Name: src Committed By: christos Date: Sun Jan 8 05:04:45 UTC 2017
Modified Files: src/sys/arch/arm/broadcom: bcm53xx_rng.c Log Message: Limit number of words we read.. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/broadcom/bcm53xx_rng.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/broadcom/bcm53xx_rng.c diff -u src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.8 src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.9 --- src/sys/arch/arm/broadcom/bcm53xx_rng.c:1.8 Mon Apr 13 17:18:40 2015 +++ src/sys/arch/arm/broadcom/bcm53xx_rng.c Sun Jan 8 00:04:45 2017 @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: bcm53xx_rng.c,v 1.8 2015/04/13 21:18:40 riastradh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: bcm53xx_rng.c,v 1.9 2017/01/08 05:04:45 christos Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -163,13 +163,14 @@ size_t bcmrng_empty(struct bcmrng_softc *sc) { mutex_enter(sc->sc_lock); + uint32_t data[128]; size_t nwords = __SHIFTOUT(bcmrng_read_4(sc, RNG_STATUS), RNG_VAL); if (nwords == 0) { mutex_exit(sc->sc_lock); return 0; } - - uint32_t data[nwords]; + if (nwords > __arraycount(data)) + nords = __arraycount(data); bcmrng_read_multi_4(sc, RNG_DATA, data, nwords);