[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e2d9d908-0103-417c-9087-c8b9030b2fbb@linux.dev>
Date: Wed, 12 Mar 2025 10:33:52 +0000
From: Vadim Fedorenko <vadim.fedorenko@...ux.dev>
To: Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>,
netdev@...r.kernel.org
Cc: jiri@...nulli.us, davem@...emloft.net, edumazet@...gle.com,
kuba@...nel.org, pabeni@...hat.com, horms@...nel.org, pierre@...ckhpc.com,
hkallweit1@...il.com, linux@...linux.org.uk, maxime.chevallier@...tlin.com,
christophe.leroy@...roup.eu, arkadiusz.kubalewski@...el.com
Subject: Re: [PATCH net v2 2/3] dpll: fix xa_alloc_cyclic() error handling
On 12/03/2025 09:52, Michal Swiatkowski wrote:
> In case of returning 1 from xa_alloc_cyclic() (wrapping) ERR_PTR(1) will
> be returned, which will cause IS_ERR() to be false. Which can lead to
> dereference not allocated pointer (pin).
>
> Fix it by checking if err is lower than zero.
>
> This wasn't found in real usecase, only noticed. Credit to Pierre.
>
> Fixes: 97f265ef7f5b ("dpll: allocate pin ids in cycle")
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>
> ---
> drivers/dpll/dpll_core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dpll/dpll_core.c b/drivers/dpll/dpll_core.c
> index 32019dc33cca..1877201d1aa9 100644
> --- a/drivers/dpll/dpll_core.c
> +++ b/drivers/dpll/dpll_core.c
> @@ -505,7 +505,7 @@ dpll_pin_alloc(u64 clock_id, u32 pin_idx, struct module *module,
> xa_init_flags(&pin->parent_refs, XA_FLAGS_ALLOC);
> ret = xa_alloc_cyclic(&dpll_pin_xa, &pin->id, pin, xa_limit_32b,
> &dpll_pin_xa_id, GFP_KERNEL);
> - if (ret)
> + if (ret < 0)
> goto err_xa_alloc;
> return pin;
> err_xa_alloc:
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@...ux.dev>
Powered by blists - more mailing lists