Hello Ajay Singh,
The patch ff52a57a7a42: "staging: wilc1000: move the allocation of
cmd out of wilc_enqueue_cmd()" from Jun 26, 2018, leads to the
following static checker warning:
drivers/staging/wilc1000/host_interface.c:3390 wilc_deinit()
warn: inconsistent returns 'hif_deinit_lock'.
drivers/staging/wilc1000/host_interface.c
3348 mutex_lock(&hif_deinit_lock);
3349
3350 terminated_handle = hif_drv;
3351
3352 del_timer_sync(&hif_drv->scan_timer);
3353 del_timer_sync(&hif_drv->connect_timer);
3354 del_timer_sync(&periodic_rssi);
3355 del_timer_sync(&hif_drv->remain_on_ch_timer);
3356
3357 wilc_set_wfi_drv_handler(vif, 0, 0, 0);
3358 wait_for_completion(&hif_driver_comp);
3359
3360 if (hif_drv->usr_scan_req.scan_result) {
3361 hif_drv->usr_scan_req.scan_result(SCAN_EVENT_ABORTED,
NULL,
3362
hif_drv->usr_scan_req.arg,
3363 NULL);
3364 hif_drv->usr_scan_req.scan_result = NULL;
3365 }
3366
3367 hif_drv->hif_state = HOST_IF_IDLE;
3368
3369 if (clients_count == 1) {
3370 struct host_if_msg *msg;
3371
3372 msg = wilc_alloc_work(vif, handle_hif_exit_work, true);
3373 if (IS_ERR(msg))
3374 return PTR_ERR(msg);
^^^^^^^^^^^^
We should unlock. Probably set terminated_handle to NULL as well?
3375
3376 result = wilc_enqueue_work(msg);
3377 if (result)
3378 netdev_err(vif->ndev, "deinit : Error(%d)\n",
result);
3379 else
3380 wait_for_completion(&msg->work_comp);
3381 kfree(msg);
3382 destroy_workqueue(hif_workqueue);
3383 }
3384
3385 kfree(hif_drv);
3386
3387 clients_count--;
3388 terminated_handle = NULL;
3389 mutex_unlock(&hif_deinit_lock);
3390 return result;
3391 }
regards,
dan carpenter
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel