On 2021/4/21 11:31, Li, Xiaoyun wrote:
> Hi
>
>> -----Original Message-----
>> From: Min Hu (Connor) <humi...@huawei.com>
>> Sent: Wednesday, April 21, 2021 10:08
>> To: dev@dpdk.org
>> Cc: Yigit, Ferruh <ferruh.yi...@intel.com>; Li, Xiaoyun
>> <xiaoyun...@intel.com>;
>> Wu, Jingjing <jingjing...@intel.com>
>> Subject: [PATCH 1/2] raw/ntb: check spad user index
>>
>> From: Chengwen Feng <fengcheng...@huawei.com>
>>
>> This patch adds checking spad user index validity when set or get attr.
>>
>> Fixes: 277310027965 ("raw/ntb: introduce NTB raw device driver")
>> Cc: sta...@dpdk.org
>>
>> Signed-off-by: Chengwen Feng <fengcheng...@huawei.com>
>> Signed-off-by: Min Hu (Connor) <humi...@huawei.com>
>> ---
>> drivers/raw/ntb/ntb.c | 8 ++++++++
>> 1 file changed, 8 insertions(+)
>>
>> diff --git a/drivers/raw/ntb/ntb.c b/drivers/raw/ntb/ntb.c index
>> 6dd213e..0f0e3f2 100644
>> --- a/drivers/raw/ntb/ntb.c
>> +++ b/drivers/raw/ntb/ntb.c
>> @@ -1080,6 +1080,10 @@ ntb_attr_set(struct rte_rawdev *dev, const char
>> *attr_name,
>> if (hw->ntb_ops->spad_write == NULL)
>> return -ENOTSUP;
>> index = atoi(&attr_name[NTB_SPAD_USER_LEN]);
>> + if (index < 0 || index >= NTB_SPAD_USER_MAX_NUM) {
>> + NTB_LOG(ERR, "Invalid attribute (%s)", attr_name);
>> + return -EINVAL;
>> + }
>
> It's unnecessary. The value will be checked in intel_ntb_spad_write(). There
> will be error remind in that.
index maybe large, and then hw->spad_user_list[index] may lead to segmentation
fault.
so the verification is required.
>
>> (*hw->ntb_ops->spad_write)(dev, hw->spad_user_list[index],
>> 1, attr_value);
>> NTB_LOG(DEBUG, "Set attribute (%s) Value (%" PRIu64 ")", @@
>> -1174,6 +1178,10 @@ ntb_attr_get(struct rte_rawdev *dev, const char
>> *attr_name,
>> if (hw->ntb_ops->spad_read == NULL)
>> return -ENOTSUP;
>> index = atoi(&attr_name[NTB_SPAD_USER_LEN]);
>> + if (index < 0 || index >= NTB_SPAD_USER_MAX_NUM) {
>> + NTB_LOG(ERR, "Attribute (%s) out of range",
>> attr_name);
>> + return -EINVAL;
>> + }
>
> Same as above.
>
>> *attr_value = (*hw->ntb_ops->spad_read)(dev,
>> hw->spad_user_list[index], 0);
>> NTB_LOG(DEBUG, "Attribute (%s) Value (%" PRIu64 ")",
>> --
>> 2.7.4
>
>
> .
>