From 32822982307d3f4288580fe2f3b25e5031900702 Mon Sep 17 00:00:00 2001 From: Rasmus Villemoes Date: Thu, 3 Oct 2024 16:10:28 +0200 Subject: [PATCH] serial: add build-time sanity check of CONFIG_SERIAL_RX_BUFFER_SIZE MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The help text says it must be a power of 2, and the implementation does rely on that. Enforce it. A violation gives a wall of text, but the last few lines should be reasonably obvious: drivers/serial/serial-uclass.c:334:9: note: in expansion of macro ‘BUILD_BUG_ON_NOT_POWER_OF_2’ 334 | BUILD_BUG_ON_NOT_POWER_OF_2(CONFIG_SERIAL_RX_BUFFER_SIZE); Signed-off-by: Rasmus Villemoes Reviewed-by: Simon Glass --- drivers/serial/serial-uclass.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 28d7a202af..484f0f7d3e 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -18,6 +18,7 @@ #include #include #include +#include #include DECLARE_GLOBAL_DATA_PTR; @@ -330,6 +331,8 @@ static int _serial_tstc(struct udevice *dev) struct serial_dev_priv *upriv = dev_get_uclass_priv(dev); uint wr, avail; + BUILD_BUG_ON_NOT_POWER_OF_2(CONFIG_SERIAL_RX_BUFFER_SIZE); + /* Read all available chars into the RX buffer while there's room */ avail = CONFIG_SERIAL_RX_BUFFER_SIZE - (upriv->wr_ptr - upriv->rd_ptr); while (avail-- && __serial_tstc(dev)) { -- 2.39.5