[PATCH 3/4] serial: add build-time sanity check of CONFIG_SERIAL_RX_BUFFER_SIZE

Simon Glass sjg at chromium.org
Wed Oct 9 03:51:04 CEST 2024


On Thu, 3 Oct 2024 at 08:11, Rasmus Villemoes <ravi at prevas.dk> wrote:
>
> 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 <ravi at prevas.dk>
> ---
>  drivers/serial/serial-uclass.c | 3 +++
>  1 file changed, 3 insertions(+)

Reviewed-by: Simon Glass <sjg at chromium.org>


>
> diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
> index 28d7a202afc..484f0f7d3e8 100644
> --- a/drivers/serial/serial-uclass.c
> +++ b/drivers/serial/serial-uclass.c
> @@ -18,6 +18,7 @@
>  #include <dm/lists.h>
>  #include <dm/device-internal.h>
>  #include <dm/of_access.h>
> +#include <linux/build_bug.h>
>  #include <linux/delay.h>
>
>  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.46.2
>


More information about the U-Boot mailing list