mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
net: hns3: add some error checking in hclge_tm module
[ Upstream commit04f25edb48] When hdev->tx_sch_mode is HCLGE_FLAG_VNET_BASE_SCH_MODE, the hclge_tm_schd_mode_vnet_base_cfg calls hclge_tm_pri_schd_mode_cfg with vport->vport_id as pri_id, which is used as index for hdev->tm_info.tc_info, it will cause out of bound access issue if vport_id is equal to or larger than HNAE3_MAX_TC. Also hardware only support maximum speed of HCLGE_ETHER_MAX_RATE. So this patch adds two checks for above cases. Fixes:848440544b("net: hns3: Add support of TX Scheduler & Shaper to HNS3 driver") Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> Signed-off-by: Peng Li <lipeng321@huawei.com> Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
bf55af0a27
commit
18f05a6fc4
@@ -57,7 +57,8 @@ static int hclge_shaper_para_calc(u32 ir, u8 shaper_level,
|
||||
u32 tick;
|
||||
|
||||
/* Calc tick */
|
||||
if (shaper_level >= HCLGE_SHAPER_LVL_CNT)
|
||||
if (shaper_level >= HCLGE_SHAPER_LVL_CNT ||
|
||||
ir > HCLGE_ETHER_MAX_RATE)
|
||||
return -EINVAL;
|
||||
|
||||
tick = tick_array[shaper_level];
|
||||
@@ -893,6 +894,9 @@ static int hclge_tm_schd_mode_vnet_base_cfg(struct hclge_vport *vport)
|
||||
int ret;
|
||||
u8 i;
|
||||
|
||||
if (vport->vport_id >= HNAE3_MAX_TC)
|
||||
return -EINVAL;
|
||||
|
||||
ret = hclge_tm_pri_schd_mode_cfg(hdev, vport->vport_id);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user