* [PATCH] net/ibm/emac: Remove VLA usage
@ 2018-09-13 21:23 Kees Cook
2018-09-13 23:53 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Kees Cook @ 2018-09-13 21:23 UTC (permalink / raw)
To: David S. Miller
Cc: netdev, Benjamin Herrenschmidt, Christian Lamparter,
Ivan Mikhaylov, linux-kernel
In the quest to remove all stack VLA usage from the kernel[1], this
removes the VLA used for the emac xaht registers size. Since the size
of registers can only ever be 4 or 8, as detected in emac_init_config(),
the max can be hardcoded and a runtime test added for robustness.
[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Christian Lamparter <chunkeey@gmail.com>
Cc: Ivan Mikhaylov <ivan@de.ibm.com>
Cc: netdev@vger.kernel.org
Co-developed-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
---
drivers/net/ethernet/ibm/emac/core.c | 6 +++++-
drivers/net/ethernet/ibm/emac/core.h | 3 +++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index 372664686309..7410a1de8f1d 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -423,7 +423,7 @@ static void emac_hash_mc(struct emac_instance *dev)
{
const int regs = EMAC_XAHT_REGS(dev);
u32 *gaht_base = emac_gaht_base(dev);
- u32 gaht_temp[regs];
+ u32 gaht_temp[EMAC_XAHT_MAX_REGS];
struct netdev_hw_addr *ha;
int i;
@@ -2964,6 +2964,10 @@ static int emac_init_config(struct emac_instance *dev)
dev->xaht_width_shift = EMAC4_XAHT_WIDTH_SHIFT;
}
+ /* This should never happen */
+ if (WARN_ON(EMAC_XAHT_REGS(dev) > EMAC_XAHT_MAX_REGS))
+ return -ENXIO;
+
DBG(dev, "features : 0x%08x / 0x%08x\n", dev->features, EMAC_FTRS_POSSIBLE);
DBG(dev, "tx_fifo_size : %d (%d gige)\n", dev->tx_fifo_size, dev->tx_fifo_size_gige);
DBG(dev, "rx_fifo_size : %d (%d gige)\n", dev->rx_fifo_size, dev->rx_fifo_size_gige);
diff --git a/drivers/net/ethernet/ibm/emac/core.h b/drivers/net/ethernet/ibm/emac/core.h
index 369de2cfb15b..84caa4a3fc52 100644
--- a/drivers/net/ethernet/ibm/emac/core.h
+++ b/drivers/net/ethernet/ibm/emac/core.h
@@ -390,6 +390,9 @@ static inline int emac_has_feature(struct emac_instance *dev,
#define EMAC4SYNC_XAHT_SLOTS_SHIFT 8
#define EMAC4SYNC_XAHT_WIDTH_SHIFT 5
+/* The largest span between slots and widths above is 3 */
+#define EMAC_XAHT_MAX_REGS (1 << 3)
+
#define EMAC_XAHT_SLOTS(dev) (1 << (dev)->xaht_slots_shift)
#define EMAC_XAHT_WIDTH(dev) (1 << (dev)->xaht_width_shift)
#define EMAC_XAHT_REGS(dev) (1 << ((dev)->xaht_slots_shift - \
--
2.17.1
--
Kees Cook
Pixel Security
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] net/ibm/emac: Remove VLA usage
2018-09-13 21:23 [PATCH] net/ibm/emac: Remove VLA usage Kees Cook
@ 2018-09-13 23:53 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2018-09-13 23:53 UTC (permalink / raw)
To: keescook; +Cc: netdev, benh, chunkeey, ivan, linux-kernel
From: Kees Cook <keescook@chromium.org>
Date: Thu, 13 Sep 2018 14:23:56 -0700
> In the quest to remove all stack VLA usage from the kernel[1], this
> removes the VLA used for the emac xaht registers size. Since the size
> of registers can only ever be 4 or 8, as detected in emac_init_config(),
> the max can be hardcoded and a runtime test added for robustness.
>
> [1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Christian Lamparter <chunkeey@gmail.com>
> Cc: Ivan Mikhaylov <ivan@de.ibm.com>
> Cc: netdev@vger.kernel.org
> Co-developed-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Signed-off-by: Kees Cook <keescook@chromium.org>
Applied to net-next, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-09-14 0:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-13 21:23 [PATCH] net/ibm/emac: Remove VLA usage Kees Cook
2018-09-13 23:53 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).