drivers/cxl/core/features.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
The cxlctl_validate_set_features() function is type bool. It's supposed
to return true for valid requests and false for invalid. However, this
error path returns ERR_PTR(-EINVAL) which is true when it was intended to
return false.
Fixes: f76e0bbc8bc3 ("cxl: Update prototype of function get_support_feature_info()")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
drivers/cxl/core/features.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/cxl/core/features.c b/drivers/cxl/core/features.c
index 6f2eae1eb126..7c750599ea69 100644
--- a/drivers/cxl/core/features.c
+++ b/drivers/cxl/core/features.c
@@ -544,7 +544,7 @@ static bool cxlctl_validate_set_features(struct cxl_features_state *cxlfs,
u32 flags;
if (rpc_in->op_size < sizeof(uuid_t))
- return ERR_PTR(-EINVAL);
+ return false;
feat = cxl_feature_info(cxlfs, &rpc_in->set_feat_in.uuid);
if (IS_ERR(feat))
--
2.47.2
On 5/28/25 1:11 AM, Dan Carpenter wrote:
> The cxlctl_validate_set_features() function is type bool. It's supposed
> to return true for valid requests and false for invalid. However, this
> error path returns ERR_PTR(-EINVAL) which is true when it was intended to
> return false.
>
> Fixes: f76e0bbc8bc3 ("cxl: Update prototype of function get_support_feature_info()")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Applied to cxl/fixes
> ---
> drivers/cxl/core/features.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/cxl/core/features.c b/drivers/cxl/core/features.c
> index 6f2eae1eb126..7c750599ea69 100644
> --- a/drivers/cxl/core/features.c
> +++ b/drivers/cxl/core/features.c
> @@ -544,7 +544,7 @@ static bool cxlctl_validate_set_features(struct cxl_features_state *cxlfs,
> u32 flags;
>
> if (rpc_in->op_size < sizeof(uuid_t))
> - return ERR_PTR(-EINVAL);
> + return false;
>
> feat = cxl_feature_info(cxlfs, &rpc_in->set_feat_in.uuid);
> if (IS_ERR(feat))
On Wed, May 28, 2025 at 11:11:41AM +0300, Dan Carpenter wrote:
> The cxlctl_validate_set_features() function is type bool. It's supposed
> to return true for valid requests and false for invalid. However, this
> error path returns ERR_PTR(-EINVAL) which is true when it was intended to
> return false.
Shiju - Can you trace this one through and add the impact statement?
Wondering if this is going to fail gracefully, or badly, further
down this path?
>
> Fixes: f76e0bbc8bc3 ("cxl: Update prototype of function get_support_feature_info()")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---
> drivers/cxl/core/features.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/cxl/core/features.c b/drivers/cxl/core/features.c
> index 6f2eae1eb126..7c750599ea69 100644
> --- a/drivers/cxl/core/features.c
> +++ b/drivers/cxl/core/features.c
> @@ -544,7 +544,7 @@ static bool cxlctl_validate_set_features(struct cxl_features_state *cxlfs,
> u32 flags;
>
> if (rpc_in->op_size < sizeof(uuid_t))
> - return ERR_PTR(-EINVAL);
> + return false;
>
> feat = cxl_feature_info(cxlfs, &rpc_in->set_feat_in.uuid);
> if (IS_ERR(feat))
> --
> 2.47.2
>
>-----Original Message-----
>From: Alison Schofield <alison.schofield@intel.com>
>Sent: 28 May 2025 16:23
>To: Shiju Jose <shiju.jose@huawei.com>; Dan Carpenter
><dan.carpenter@linaro.org>
>Cc: Davidlohr Bueso <dave@stgolabs.net>; Jonathan Cameron
><jonathan.cameron@huawei.com>; Dave Jiang <dave.jiang@intel.com>; Vishal
>Verma <vishal.l.verma@intel.com>; Ira Weiny <ira.weiny@intel.com>; Dan
>Williams <dan.j.williams@intel.com>; Li Ming <ming.li@zohomail.com>; Fan Ni
><fan.ni@samsung.com>; linux-cxl@vger.kernel.org; linux-
>kernel@vger.kernel.org; kernel-janitors@vger.kernel.org
>Subject: Re: [PATCH next] cxl: fix return value in cxlctl_validate_set_features()
>
>On Wed, May 28, 2025 at 11:11:41AM +0300, Dan Carpenter wrote:
>> The cxlctl_validate_set_features() function is type bool. It's
>> supposed to return true for valid requests and false for invalid.
>> However, this error path returns ERR_PTR(-EINVAL) which is true when
>> it was intended to return false.
>
>Shiju - Can you trace this one through and add the impact statement?
>Wondering if this is going to fail gracefully, or badly, further down this path?
Hi Alison,
This is introduced when following fwctl specific code
move out of common function (use both in fwctl and edac path)
get_support_feature_info() to fwctl specific function
cxlctl_validae_set_feature().
"if (rpc_in->op_size < sizeof(uuid_t))
return ERR_PTR(-EINVAL);"
This may have an impact on fwctl side if the above check pass.
Thanks,
Shiju
>
>>
>> Fixes: f76e0bbc8bc3 ("cxl: Update prototype of function
>> get_support_feature_info()")
>> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
>> ---
>> drivers/cxl/core/features.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/cxl/core/features.c b/drivers/cxl/core/features.c
>> index 6f2eae1eb126..7c750599ea69 100644
>> --- a/drivers/cxl/core/features.c
>> +++ b/drivers/cxl/core/features.c
>> @@ -544,7 +544,7 @@ static bool cxlctl_validate_set_features(struct
>cxl_features_state *cxlfs,
>> u32 flags;
>>
>> if (rpc_in->op_size < sizeof(uuid_t))
>> - return ERR_PTR(-EINVAL);
>> + return false;
>>
>> feat = cxl_feature_info(cxlfs, &rpc_in->set_feat_in.uuid);
>> if (IS_ERR(feat))
>> --
>> 2.47.2
>>
Shiju Jose wrote: > >-----Original Message----- > >From: Alison Schofield <alison.schofield@intel.com> > >Sent: 28 May 2025 16:23 > >To: Shiju Jose <shiju.jose@huawei.com>; Dan Carpenter > ><dan.carpenter@linaro.org> > >Cc: Davidlohr Bueso <dave@stgolabs.net>; Jonathan Cameron > ><jonathan.cameron@huawei.com>; Dave Jiang <dave.jiang@intel.com>; Vishal > >Verma <vishal.l.verma@intel.com>; Ira Weiny <ira.weiny@intel.com>; Dan > >Williams <dan.j.williams@intel.com>; Li Ming <ming.li@zohomail.com>; Fan Ni > ><fan.ni@samsung.com>; linux-cxl@vger.kernel.org; linux- > >kernel@vger.kernel.org; kernel-janitors@vger.kernel.org > >Subject: Re: [PATCH next] cxl: fix return value in cxlctl_validate_set_features() > > > >On Wed, May 28, 2025 at 11:11:41AM +0300, Dan Carpenter wrote: > >> The cxlctl_validate_set_features() function is type bool. It's > >> supposed to return true for valid requests and false for invalid. > >> However, this error path returns ERR_PTR(-EINVAL) which is true when > >> it was intended to return false. > > > >Shiju - Can you trace this one through and add the impact statement? > >Wondering if this is going to fail gracefully, or badly, further down this path? > > Hi Alison, > > This is introduced when following fwctl specific code > move out of common function (use both in fwctl and edac path) > get_support_feature_info() to fwctl specific function > cxlctl_validae_set_feature(). > "if (rpc_in->op_size < sizeof(uuid_t)) > return ERR_PTR(-EINVAL);" > > This may have an impact on fwctl side if the above check pass. > I got a bit sidetracked by this conversation. It seems the TLDR is: This fix is not required. But should be fixed for long term correctness. With that interpretation. Reviewed-by: Ira Weiny <ira.weiny@intel.com>
On Wed, May 28, 2025 at 08:22:35AM -0700, Alison Schofield wrote: > On Wed, May 28, 2025 at 11:11:41AM +0300, Dan Carpenter wrote: > > The cxlctl_validate_set_features() function is type bool. It's supposed > > to return true for valid requests and false for invalid. However, this > > error path returns ERR_PTR(-EINVAL) which is true when it was intended to > > return false. > > Shiju - Can you trace this one through and add the impact statement? > Wondering if this is going to fail gracefully, or badly, further > down this path? > Sorry, I would normally analyse this a bit more myself, but it's only in linux-next so I assumed no one was using it yet. It ends up being fine. cxlctl_set_feature() has a check for: if (rpc_in->op_size <= sizeof(feat_in->hdr)) at the start and sizeof(feat_in->hdr) is larger than sizeof(uuid_t). regards, dan carpenter
© 2016 - 2025 Red Hat, Inc.