提交 7061867b 编写于 作者: H Huazhong Tan 提交者: David S. Miller

net: hns3: replace an unsuitable variable type in hclge_inform_reset_assert_to_vf()

In hclge_inform_reset_assert_to_vf(), variable reset_type(enum type)
will be copied into msg_data whose size is 2 bytes. Currently, hip08
is a little-endian machine, so the lower two bytes of reset_type will
be copied to msg_data. But when running on a big-endian machine,
msg_data will have a wrong value(the higher two bytes of reset_type).

So this patch modifies the type of reset_type to u16, and adds a
build check in case enum hnae3_reset_type has value larger than
U16_MAX.
Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 2af8cb61
...@@ -164,6 +164,7 @@ enum hnae3_reset_type { ...@@ -164,6 +164,7 @@ enum hnae3_reset_type {
HNAE3_IMP_RESET, HNAE3_IMP_RESET,
HNAE3_UNKNOWN_RESET, HNAE3_UNKNOWN_RESET,
HNAE3_NONE_RESET, HNAE3_NONE_RESET,
HNAE3_MAX_RESET,
}; };
enum hnae3_flr_state { enum hnae3_flr_state {
......
...@@ -86,10 +86,12 @@ static int hclge_send_mbx_msg(struct hclge_vport *vport, u8 *msg, u16 msg_len, ...@@ -86,10 +86,12 @@ static int hclge_send_mbx_msg(struct hclge_vport *vport, u8 *msg, u16 msg_len,
int hclge_inform_reset_assert_to_vf(struct hclge_vport *vport) int hclge_inform_reset_assert_to_vf(struct hclge_vport *vport)
{ {
struct hclge_dev *hdev = vport->back; struct hclge_dev *hdev = vport->back;
enum hnae3_reset_type reset_type; u16 reset_type;
u8 msg_data[2]; u8 msg_data[2];
u8 dest_vfid; u8 dest_vfid;
BUILD_BUG_ON(HNAE3_MAX_RESET > U16_MAX);
dest_vfid = (u8)vport->vport_id; dest_vfid = (u8)vport->vport_id;
if (hdev->reset_type == HNAE3_FUNC_RESET) if (hdev->reset_type == HNAE3_FUNC_RESET)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册