[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240804182519.00006ea8@Huawei.com>
Date: Sun, 4 Aug 2024 18:25:19 +0100
From: Jonathan Cameron <Jonathan.Cameron@...wei.com>
To: <alejandro.lucero-palau@....com>
CC: <linux-cxl@...r.kernel.org>, <netdev@...r.kernel.org>,
<dan.j.williams@...el.com>, <martin.habets@...inx.com>,
<edward.cree@....com>, <davem@...emloft.net>, <kuba@...nel.org>,
<pabeni@...hat.com>, <edumazet@...gle.com>, <richard.hughes@....com>,
Alejandro Lucero <alucerop@....com>
Subject: Re: [PATCH v2 05/15] cxl: fix use of resource_contains
On Mon, 15 Jul 2024 18:28:25 +0100
<alejandro.lucero-palau@....com> wrote:
> From: Alejandro Lucero <alucerop@....com>
>
> For a resource defined with size zero, resource contains will also
> return true.
>
> Add resource size check before using it.
>
> Signed-off-by: Alejandro Lucero <alucerop@....com>
If this can happen in existing type 3 case the fixes tag
and send it separately from this series.
If there is no path due to some external code, then
drop the word fix from the title and call it
cxl: harden resource_contains checks to handle zero size resources
Avoids it getting backported into stable / distros picking it
up if there isn't a real issue before this series.
Thanks,
Jonathan
> ---
> drivers/cxl/core/hdm.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c
> index 3df10517a327..4af9225d4b59 100644
> --- a/drivers/cxl/core/hdm.c
> +++ b/drivers/cxl/core/hdm.c
> @@ -327,10 +327,13 @@ static int __cxl_dpa_reserve(struct cxl_endpoint_decoder *cxled,
> cxled->dpa_res = res;
> cxled->skip = skipped;
>
> - if (resource_contains(&cxlds->pmem_res, res))
> + if ((resource_size(&cxlds->pmem_res)) && (resource_contains(&cxlds->pmem_res, res))) {
> + printk("%s: resource_contains CXL_DECODER_PMEM\n", __func__);
> cxled->mode = CXL_DECODER_PMEM;
> - else if (resource_contains(&cxlds->ram_res, res))
> + } else if ((resource_size(&cxlds->ram_res)) && (resource_contains(&cxlds->ram_res, res))) {
> + printk("%s: resource_contains CXL_DECODER_RAM\n", __func__);
> cxled->mode = CXL_DECODER_RAM;
> + }
> else {
> dev_warn(dev, "decoder%d.%d: %pr mixed mode not supported\n",
> port->id, cxled->cxld.id, cxled->dpa_res);
Powered by blists - more mailing lists