struct q6adm_cmd_device_open_v5 *open;
int afe_port = q6afe_get_port_id(port_id);
struct apr_pkt *pkt;
- void *p;
- int ret, pkt_size;
-
- pkt_size = APR_HDR_SIZE + sizeof(*open);
- p = kzalloc(pkt_size, GFP_KERNEL);
+ int ret, pkt_size = APR_HDR_SIZE + sizeof(*open);
+ void *p __free(kfree) = kzalloc(pkt_size, GFP_KERNEL);
if (!p)
return -ENOMEM;
ret = q6dsp_map_channels(&open->dev_channel_mapping[0],
channel_mode);
if (ret)
- goto err;
-
- ret = q6adm_apr_send_copp_pkt(adm, copp, pkt,
- ADM_CMDRSP_DEVICE_OPEN_V5);
+ return ret;
-err:
- kfree(pkt);
- return ret;
+ return q6adm_apr_send_copp_pkt(adm, copp, pkt, ADM_CMDRSP_DEVICE_OPEN_V5);
}
/**
struct q6adm_session_map_node_v5 *node;
struct apr_pkt *pkt;
uint16_t *copps_list;
- int pkt_size, ret, i, copp_idx;
- void *matrix_map;
- struct q6copp *copp;
-
+ int ret, i, copp_idx;
/* Assumes port_ids have already been validated during adm_open */
- pkt_size = (APR_HDR_SIZE + sizeof(*route) + sizeof(*node) +
+ struct q6copp *copp;
+ int pkt_size = (APR_HDR_SIZE + sizeof(*route) + sizeof(*node) +
(sizeof(uint32_t) * payload_map.num_copps));
-
- matrix_map = kzalloc(pkt_size, GFP_KERNEL);
+ void *matrix_map __free(kfree) = kzalloc(pkt_size, GFP_KERNEL);
if (!matrix_map)
return -ENOMEM;
if (port_idx < 0) {
dev_err(dev, "Invalid port_id %d\n",
payload_map.port_id[i]);
- kfree(pkt);
return -EINVAL;
}
copp_idx = payload_map.copp_idx[i];
copp = q6adm_find_copp(adm, port_idx, copp_idx);
- if (!copp) {
- kfree(pkt);
+ if (!copp)
return -EINVAL;
- }
copps_list[i] = copp->id;
kref_put(&copp->refcount, q6adm_free_copp);
fail_cmd:
mutex_unlock(&adm->lock);
- kfree(pkt);
return ret;
}
EXPORT_SYMBOL_GPL(q6adm_matrix_map);