| From 64e3ef8427b06c4e3721b3d503ff1903dd10e0f8 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 29 Jun 2020 18:49:51 +0800 |
| Subject: net: cxgb4: fix return error value in t4_prep_fw |
| |
| From: Li Heng <liheng40@huawei.com> |
| |
| [ Upstream commit 8a259e6b73ad8181b0b2ef338b35043433db1075 ] |
| |
| 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: 16e47624e76b ("cxgb4: Add new scheme to update T4/T5 firmware") |
| Reported-by: Hulk Robot <hulkci@huawei.com> |
| Signed-off-by: Li Heng <liheng40@huawei.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c |
| index 31fcfc58e3373..588b63473c473 100644 |
| --- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c |
| +++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c |
| @@ -3499,7 +3499,7 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info, |
| drv_fw = &fw_info->fw_hdr; |
| |
| /* 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), |
| (uint32_t *)card_fw, 1); |
| if (ret == 0) { |
| @@ -3528,8 +3528,8 @@ int t4_prep_fw(struct adapter *adap, struct fw_info *fw_info, |
| should_install_fs_fw(adap, card_fw_usable, |
| be32_to_cpu(fs_fw->fw_ver), |
| be32_to_cpu(card_fw->fw_ver))) { |
| - ret = -t4_fw_upgrade(adap, adap->mbox, fw_data, |
| - fw_size, 0); |
| + ret = t4_fw_upgrade(adap, adap->mbox, fw_data, |
| + fw_size, 0); |
| if (ret != 0) { |
| dev_err(adap->pdev_dev, |
| "failed to install firmware: %d\n", ret); |
| @@ -3560,7 +3560,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_MAJOR_G(k), FW_HDR_FW_VER_MINOR_G(k), |
| FW_HDR_FW_VER_MICRO_G(k), FW_HDR_FW_VER_BUILD_G(k)); |
| - ret = EINVAL; |
| + ret = -EINVAL; |
| goto bye; |
| } |
| |
| -- |
| 2.25.1 |
| |