Commit 8a259e6b authored by Li Heng's avatar Li Heng Committed by David S. Miller

net: cxgb4: fix return error value in t4_prep_fw

t4_prep_fw goto bye tag with positive return value when something
bad happened and which can not free resource in adap_init0.
so fix it to return negative value.

Fixes: 16e47624 ("cxgb4: Add new scheme to update T4/T5 firmware")
Reported-by: default avatarHulk Robot <hulkci@huawei.com>
Signed-off-by: default avatarLi Heng <liheng40@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e708e2bd
...@@ -3493,7 +3493,7 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info, ...@@ -3493,7 +3493,7 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info,
drv_fw = &fw_info->fw_hdr; drv_fw = &fw_info->fw_hdr;
/* Read the header of the firmware on the card */ /* Read the header of the firmware on the card */
ret = -t4_read_flash(adap, FLASH_FW_START, ret = t4_read_flash(adap, FLASH_FW_START,
sizeof(*card_fw) / sizeof(uint32_t), sizeof(*card_fw) / sizeof(uint32_t),
(uint32_t *)card_fw, 1); (uint32_t *)card_fw, 1);
if (ret == 0) { if (ret == 0) {
...@@ -3522,7 +3522,7 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info, ...@@ -3522,7 +3522,7 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info,
should_install_fs_fw(adap, card_fw_usable, should_install_fs_fw(adap, card_fw_usable,
be32_to_cpu(fs_fw->fw_ver), be32_to_cpu(fs_fw->fw_ver),
be32_to_cpu(card_fw->fw_ver))) { be32_to_cpu(card_fw->fw_ver))) {
ret = -t4_fw_upgrade(adap, adap->mbox, fw_data, ret = t4_fw_upgrade(adap, adap->mbox, fw_data,
fw_size, 0); fw_size, 0);
if (ret != 0) { if (ret != 0) {
dev_err(adap->pdev_dev, dev_err(adap->pdev_dev,
...@@ -3554,7 +3554,7 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info, ...@@ -3554,7 +3554,7 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info,
FW_HDR_FW_VER_MICRO_G(c), FW_HDR_FW_VER_BUILD_G(c), FW_HDR_FW_VER_MICRO_G(c), FW_HDR_FW_VER_BUILD_G(c),
FW_HDR_FW_VER_MAJOR_G(k), FW_HDR_FW_VER_MINOR_G(k), FW_HDR_FW_VER_MAJOR_G(k), FW_HDR_FW_VER_MINOR_G(k),
FW_HDR_FW_VER_MICRO_G(k), FW_HDR_FW_VER_BUILD_G(k)); FW_HDR_FW_VER_MICRO_G(k), FW_HDR_FW_VER_BUILD_G(k));
ret = EINVAL; ret = -EINVAL;
goto bye; goto bye;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment