Messages in this thread | | | Date | Thu, 29 Dec 2022 18:31:07 +0300 | From | Dan Carpenter <> | Subject | drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c:161 amd_sfh1_1_hid_client_init() warn: missing unwind goto? |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 1b929c02afd37871d5afb9d498426f83432e71c2 commit: 93ce5e0231d79189be4d9e5f9295807b18941419 HID: amd_sfh: Implement SFH1.1 functionality config: ia64-randconfig-m041-20221229 compiler: ia64-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Reported-by: Dan Carpenter <error27@gmail.com>
smatch warnings: drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c:161 amd_sfh1_1_hid_client_init() warn: missing unwind goto?
vim +161 drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
93ce5e0231d791 Basavaraj Natikar 2022-07-12 95 static int amd_sfh1_1_hid_client_init(struct amd_mp2_dev *privdata) 93ce5e0231d791 Basavaraj Natikar 2022-07-12 96 { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 97 struct amd_input_data *in_data = &privdata->in_data; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 98 struct amdtp_cl_data *cl_data = privdata->cl_data; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 99 struct amd_mp2_ops *mp2_ops = privdata->mp2_ops; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 100 struct amd_mp2_sensor_info info; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 101 struct request_list *req_list; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 102 u32 feature_report_size; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 103 u32 input_report_size; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 104 struct device *dev; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 105 int rc, i, status; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 106 u8 cl_idx; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 107 93ce5e0231d791 Basavaraj Natikar 2022-07-12 108 req_list = &cl_data->req_list; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 109 dev = &privdata->pdev->dev; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 110 amd_sfh1_1_set_desc_ops(mp2_ops); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 111 93ce5e0231d791 Basavaraj Natikar 2022-07-12 112 cl_data->num_hid_devices = amd_sfh_get_sensor_num(privdata, &cl_data->sensor_idx[0]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 113 93ce5e0231d791 Basavaraj Natikar 2022-07-12 114 INIT_DELAYED_WORK(&cl_data->work, amd_sfh_work); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 115 INIT_DELAYED_WORK(&cl_data->work_buffer, amd_sfh_work_buffer); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 116 INIT_LIST_HEAD(&req_list->list); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 117 cl_data->in_data = in_data; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 118 93ce5e0231d791 Basavaraj Natikar 2022-07-12 119 for (i = 0; i < cl_data->num_hid_devices; i++) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 120 cl_data->sensor_sts[i] = SENSOR_DISABLED; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 121 cl_data->sensor_requested_cnt[i] = 0; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 122 cl_data->cur_hid_dev = i; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 123 cl_idx = cl_data->sensor_idx[i]; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 124 93ce5e0231d791 Basavaraj Natikar 2022-07-12 125 cl_data->report_descr_sz[i] = mp2_ops->get_desc_sz(cl_idx, descr_size); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 126 if (!cl_data->report_descr_sz[i]) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 127 rc = -EINVAL; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 128 goto cleanup; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 129 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 130 feature_report_size = mp2_ops->get_desc_sz(cl_idx, feature_size); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 131 if (!feature_report_size) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 132 rc = -EINVAL; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 133 goto cleanup; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 134 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 135 input_report_size = mp2_ops->get_desc_sz(cl_idx, input_size); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 136 if (!input_report_size) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 137 rc = -EINVAL; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 138 goto cleanup; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 139 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 140 cl_data->feature_report[i] = devm_kzalloc(dev, feature_report_size, GFP_KERNEL); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 141 if (!cl_data->feature_report[i]) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 142 rc = -ENOMEM; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 143 goto cleanup; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 144 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 145 in_data->input_report[i] = devm_kzalloc(dev, input_report_size, GFP_KERNEL); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 146 if (!in_data->input_report[i]) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 147 rc = -ENOMEM; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 148 goto cleanup; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 149 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 150 93ce5e0231d791 Basavaraj Natikar 2022-07-12 151 info.sensor_idx = cl_idx; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 152 93ce5e0231d791 Basavaraj Natikar 2022-07-12 153 cl_data->report_descr[i] = 93ce5e0231d791 Basavaraj Natikar 2022-07-12 154 devm_kzalloc(dev, cl_data->report_descr_sz[i], GFP_KERNEL); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 155 if (!cl_data->report_descr[i]) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 156 rc = -ENOMEM; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 157 goto cleanup; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 158 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 159 rc = mp2_ops->get_rep_desc(cl_idx, cl_data->report_descr[i]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 160 if (rc) 93ce5e0231d791 Basavaraj Natikar 2022-07-12 @161 return rc;
goto cleanup?
93ce5e0231d791 Basavaraj Natikar 2022-07-12 162 93ce5e0231d791 Basavaraj Natikar 2022-07-12 163 writel(0, privdata->mmio + AMD_P2C_MSG(0)); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 164 mp2_ops->start(privdata, info); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 165 status = amd_sfh_wait_for_response 93ce5e0231d791 Basavaraj Natikar 2022-07-12 166 (privdata, cl_data->sensor_idx[i], ENABLE_SENSOR); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 167 93ce5e0231d791 Basavaraj Natikar 2022-07-12 168 status = (status == 0) ? SENSOR_ENABLED : SENSOR_DISABLED; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 169 93ce5e0231d791 Basavaraj Natikar 2022-07-12 170 if (status == SENSOR_ENABLED) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 171 cl_data->sensor_sts[i] = SENSOR_ENABLED; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 172 rc = amdtp_hid_probe(i, cl_data); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 173 if (rc) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 174 mp2_ops->stop(privdata, cl_data->sensor_idx[i]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 175 status = amd_sfh_wait_for_response 93ce5e0231d791 Basavaraj Natikar 2022-07-12 176 (privdata, cl_data->sensor_idx[i], DISABLE_SENSOR); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 177 if (status == 0) 93ce5e0231d791 Basavaraj Natikar 2022-07-12 178 status = SENSOR_DISABLED; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 179 if (status != SENSOR_ENABLED) 93ce5e0231d791 Basavaraj Natikar 2022-07-12 180 cl_data->sensor_sts[i] = SENSOR_DISABLED; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 181 dev_dbg(dev, "sid 0x%x (%s) status 0x%x\n", 93ce5e0231d791 Basavaraj Natikar 2022-07-12 182 cl_data->sensor_idx[i], 93ce5e0231d791 Basavaraj Natikar 2022-07-12 183 get_sensor_name(cl_data->sensor_idx[i]), 93ce5e0231d791 Basavaraj Natikar 2022-07-12 184 cl_data->sensor_sts[i]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 185 goto cleanup; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 186 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 187 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 188 dev_dbg(dev, "sid 0x%x (%s) status 0x%x\n", 93ce5e0231d791 Basavaraj Natikar 2022-07-12 189 cl_data->sensor_idx[i], get_sensor_name(cl_data->sensor_idx[i]), 93ce5e0231d791 Basavaraj Natikar 2022-07-12 190 cl_data->sensor_sts[i]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 191 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 192 93ce5e0231d791 Basavaraj Natikar 2022-07-12 193 schedule_delayed_work(&cl_data->work_buffer, msecs_to_jiffies(AMD_SFH_IDLE_LOOP)); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 194 return 0; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 195 93ce5e0231d791 Basavaraj Natikar 2022-07-12 196 cleanup: 93ce5e0231d791 Basavaraj Natikar 2022-07-12 197 amd_sfh_hid_client_deinit(privdata); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 198 for (i = 0; i < cl_data->num_hid_devices; i++) { 93ce5e0231d791 Basavaraj Natikar 2022-07-12 199 devm_kfree(dev, cl_data->feature_report[i]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 200 devm_kfree(dev, in_data->input_report[i]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 201 devm_kfree(dev, cl_data->report_descr[i]); 93ce5e0231d791 Basavaraj Natikar 2022-07-12 202 } 93ce5e0231d791 Basavaraj Natikar 2022-07-12 203 return rc; 93ce5e0231d791 Basavaraj Natikar 2022-07-12 204 }
-- 0-DAY CI Kernel Test Service https://01.org/lkp
| |