[PATCH v1 14/14] net/zxdh: clean stat values
Stephen Hemminger
stephen at networkplumber.org
Mon Feb 10 19:19:39 CET 2025
On Mon, 10 Feb 2025 09:50:17 +0800
Bingbin Chen <chen.bingbin at zte.com.cn> wrote:
> +static uint32_t
> +zxdh_np_se_smmu0_ind_read(uint32_t dev_id,
> + uint32_t base_addr,
> + uint32_t index,
> + uint32_t rd_mode,
> + uint32_t rd_clr_mode,
> + uint32_t *p_data)
> +{
> + uint32_t rc = ZXDH_OK;
> + uint32_t i = 0;
> + uint32_t row_index = 0;
> + uint32_t col_index = 0;
> + uint32_t temp_data[4] = {0};
> + uint32_t *p_temp_data = NULL;
> + ZXDH_SMMU0_SMMU0_CPU_IND_CMD_T cpu_ind_cmd = {0};
> + ZXDH_MUTEX_T *p_ind_mutex = NULL;
> +
> + rc = zxdh_np_dev_opr_mutex_get(dev_id, ZXDH_DEV_MUTEX_T_SMMU0, &p_ind_mutex);
> + ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_dev_opr_mutex_get");
> +
> + rc = zxdh_np_comm_mutex_lock(p_ind_mutex);
> + ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_comm_mutex_lock");
> +
> + rc = zxdh_np_se_done_status_check(dev_id, ZXDH_SMMU0_SMMU0_WR_ARB_CPU_RDYR, 0);
> + ZXDH_COMM_CHECK_DEV_RC_UNLOCK(dev_id, rc, "zxdh_np_se_done_status_check", p_ind_mutex);
> +
> + if (rd_clr_mode == ZXDH_RD_MODE_HOLD) {
> + cpu_ind_cmd.cpu_ind_rw = ZXDH_SE_OPR_RD;
> + cpu_ind_cmd.cpu_ind_rd_mode = ZXDH_RD_MODE_HOLD;
> + cpu_ind_cmd.cpu_req_mode = ZXDH_ERAM128_OPR_128b;
> +
> + switch (rd_mode) {
> + case ZXDH_ERAM128_OPR_128b:
> + {
> + if ((0xFFFFFFFF - (base_addr)) < (index)) {
> + rc = zxdh_np_comm_mutex_unlock(p_ind_mutex);
> + ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_comm_mutex_unlock");
> + PMD_DRV_LOG(ERR, "%s : index 0x%x is invalid!", __func__, index);
> + return ZXDH_PAR_CHK_INVALID_INDEX;
> + }
> + if (base_addr + index > ZXDH_SE_SMMU0_ERAM_ADDR_NUM_TOTAL - 1) {
> + PMD_DRV_LOG(ERR, "%s : index out of range !", __func__);
> + rc = zxdh_np_comm_mutex_unlock(p_ind_mutex);
> + ZXDH_COMM_CHECK_DEV_RC(dev_id, rc, "zxdh_np_comm_mutex_unlock");
> + return ZXDH_ERR;
> + }
The error paths here are a bit of a mess.
Do you really have to check return value of mutex_unlock if already have an error?
More information about the dev
mailing list