[v1] bus/ifpga: fix issue of accessing null address
Checks
Commit Message
In function ifpga_scan_one(), variable 'path' is NULL if device argument
'afu_bts' is not set, subsequent string copy with 'path' would lead to
segmentation fault.
Fixes: 6fa4aa2b3645 ("bus/ifpga: fix forcing optional devargs")
Cc: stable@dpdk.org
Signed-off-by: Wei Huang <wei.huang@intel.com>
---
drivers/bus/ifpga/ifpga_bus.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
> -----Original Message-----
> From: Huang, Wei <wei.huang@intel.com>
> Sent: Friday, March 17, 2023 4:44 AM
> To: dev@dpdk.org; thomas@monjalon.net; david.marchand@redhat.com
> Cc: stable@dpdk.org; Xu, Rosen <rosen.xu@intel.com>; Zhang, Tianfei
> <tianfei.zhang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Huang, Wei
> <wei.huang@intel.com>
> Subject: [PATCH v1] bus/ifpga: fix issue of accessing null address
>
> In function ifpga_scan_one(), variable 'path' is NULL if device argument 'afu_bts' is
> not set, subsequent string copy with 'path' would lead to segmentation fault.
>
> Fixes: 6fa4aa2b3645 ("bus/ifpga: fix forcing optional devargs")
> Cc: stable@dpdk.org
>
> Signed-off-by: Wei Huang <wei.huang@intel.com>
> ---
> drivers/bus/ifpga/ifpga_bus.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c index
> bb943b5..07e316b 100644
> --- a/drivers/bus/ifpga/ifpga_bus.c
> +++ b/drivers/bus/ifpga/ifpga_bus.c
> @@ -135,6 +135,8 @@ struct rte_afu_device *
> goto end;
> }
> afu_pr_conf.pr_enable = 1;
> + strlcpy(afu_pr_conf.bs_path, path,
> + sizeof(afu_pr_conf.bs_path));
> } else {
> afu_pr_conf.pr_enable = 0;
> }
> @@ -174,7 +176,6 @@ struct rte_afu_device *
> rawdev->dev_ops->dev_start(rawdev))
> goto end;
>
> - strlcpy(afu_pr_conf.bs_path, path, sizeof(afu_pr_conf.bs_path));
> if (rawdev->dev_ops &&
> rawdev->dev_ops->firmware_load &&
> rawdev->dev_ops->firmware_load(rawdev,
> --
> 1.8.3.1
It looks good for me.
Acked-by: Tianfei Zhang <tianfei.zhang@intel.com>
Hi,
> -----Original Message-----
> From: Huang, Wei <wei.huang@intel.com>
> Sent: Friday, March 17, 2023 4:44 AM
> To: dev@dpdk.org; thomas@monjalon.net; david.marchand@redhat.com
> Cc: stable@dpdk.org; Xu, Rosen <rosen.xu@intel.com>; Zhang, Tianfei
> <tianfei.zhang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Huang, Wei
> <wei.huang@intel.com>
> Subject: [PATCH v1] bus/ifpga: fix issue of accessing null address
>
> In function ifpga_scan_one(), variable 'path' is NULL if device argument
> 'afu_bts' is not set, subsequent string copy with 'path' would lead to
> segmentation fault.
>
> Fixes: 6fa4aa2b3645 ("bus/ifpga: fix forcing optional devargs")
> Cc: stable@dpdk.org
>
> Signed-off-by: Wei Huang <wei.huang@intel.com>
> ---
> drivers/bus/ifpga/ifpga_bus.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c
> index bb943b5..07e316b 100644
> --- a/drivers/bus/ifpga/ifpga_bus.c
> +++ b/drivers/bus/ifpga/ifpga_bus.c
> @@ -135,6 +135,8 @@ struct rte_afu_device *
> goto end;
> }
> afu_pr_conf.pr_enable = 1;
> + strlcpy(afu_pr_conf.bs_path, path,
> + sizeof(afu_pr_conf.bs_path));
> } else {
> afu_pr_conf.pr_enable = 0;
> }
> @@ -174,7 +176,6 @@ struct rte_afu_device *
> rawdev->dev_ops->dev_start(rawdev))
> goto end;
>
> - strlcpy(afu_pr_conf.bs_path, path, sizeof(afu_pr_conf.bs_path));
> if (rawdev->dev_ops &&
> rawdev->dev_ops->firmware_load &&
> rawdev->dev_ops->firmware_load(rawdev,
> --
> 1.8.3.1
Acked-by: Rosen Xu <rosen.xu@intel.com>
> > In function ifpga_scan_one(), variable 'path' is NULL if device argument 'afu_bts' is
> > not set, subsequent string copy with 'path' would lead to segmentation fault.
> >
> > Fixes: 6fa4aa2b3645 ("bus/ifpga: fix forcing optional devargs")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Wei Huang <wei.huang@intel.com>
>
> It looks good for me.
> Acked-by: Tianfei Zhang <tianfei.zhang@intel.com>
Applied, thanks.
@@ -135,6 +135,8 @@ struct rte_afu_device *
goto end;
}
afu_pr_conf.pr_enable = 1;
+ strlcpy(afu_pr_conf.bs_path, path,
+ sizeof(afu_pr_conf.bs_path));
} else {
afu_pr_conf.pr_enable = 0;
}
@@ -174,7 +176,6 @@ struct rte_afu_device *
rawdev->dev_ops->dev_start(rawdev))
goto end;
- strlcpy(afu_pr_conf.bs_path, path, sizeof(afu_pr_conf.bs_path));
if (rawdev->dev_ops &&
rawdev->dev_ops->firmware_load &&
rawdev->dev_ops->firmware_load(rawdev,