diff options
-rw-r--r-- | drivers/misc/mei/amthif.c | 14 | ||||
-rw-r--r-- | drivers/misc/mei/init.c | 6 | ||||
-rw-r--r-- | drivers/misc/mei/interrupt.c | 14 | ||||
-rw-r--r-- | drivers/misc/mei/iorw.c | 2 | ||||
-rw-r--r-- | drivers/misc/mei/main.c | 8 | ||||
-rw-r--r-- | drivers/misc/mei/mei_dev.h | 9 |
6 files changed, 24 insertions, 29 deletions
diff --git a/drivers/misc/mei/amthif.c b/drivers/misc/mei/amthif.c index 1de28df94da4..74d593fd6cbd 100644 --- a/drivers/misc/mei/amthif.c +++ b/drivers/misc/mei/amthif.c @@ -119,14 +119,12 @@ void mei_amthif_host_init(struct mei_device *dev) struct mei_cl_cb *mei_amthif_find_read_list_entry(struct mei_device *dev, struct file *file) { - struct mei_cl *cl_temp; struct mei_cl_cb *pos = NULL; struct mei_cl_cb *next = NULL; list_for_each_entry_safe(pos, next, &dev->amthif_rd_complete_list.list, list) { - cl_temp = (struct mei_cl *)pos->file_private; - if (cl_temp && cl_temp == &dev->iamthif_cl && + if (pos->cl && pos->cl == &dev->iamthif_cl && pos->file_object == file) return pos; } @@ -370,7 +368,6 @@ int mei_amthif_write(struct mei_device *dev, struct mei_cl_cb *cb) */ void mei_amthif_run_next_cmd(struct mei_device *dev) { - struct mei_cl *cl_tmp; struct mei_cl_cb *pos = NULL; struct mei_cl_cb *next = NULL; int status; @@ -390,9 +387,8 @@ void mei_amthif_run_next_cmd(struct mei_device *dev) list_for_each_entry_safe(pos, next, &dev->amthif_cmd_list.list, list) { list_del(&pos->list); - cl_tmp = (struct mei_cl *)pos->file_private; - if (cl_tmp && cl_tmp == &dev->iamthif_cl) { + if (pos->cl && pos->cl == &dev->iamthif_cl) { status = mei_amthif_send_cmd(dev, pos); if (status) { dev_dbg(&dev->pdev->dev, @@ -500,7 +496,6 @@ int mei_amthif_irq_process_completed(struct mei_device *dev, s32 *slots, int mei_amthif_irq_read_message(struct mei_cl_cb *complete_list, struct mei_device *dev, struct mei_msg_hdr *mei_hdr) { - struct mei_cl *cl; struct mei_cl_cb *cb; unsigned char *buffer; @@ -528,14 +523,13 @@ int mei_amthif_irq_read_message(struct mei_cl_cb *complete_list, cb = dev->iamthif_current_cb; dev->iamthif_current_cb = NULL; - cl = (struct mei_cl *)cb->file_private; - if (!cl) + if (!cb->cl) return -ENODEV; dev->iamthif_stall_timer = 0; cb->buf_idx = dev->iamthif_msg_buf_index; cb->read_time = jiffies; - if (dev->iamthif_ioctl && cl == &dev->iamthif_cl) { + if (dev->iamthif_ioctl && cb->cl == &dev->iamthif_cl) { /* found the iamthif cb */ dev_dbg(&dev->pdev->dev, "complete the amthi read cb.\n "); dev_dbg(&dev->pdev->dev, "add the amthi read cb to complete.\n "); diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c index 7e6d591fef49..0046ca505489 100644 --- a/drivers/misc/mei/init.c +++ b/drivers/misc/mei/init.c @@ -55,10 +55,8 @@ void mei_io_list_flush(struct mei_cl_cb *list, struct mei_cl *cl) struct mei_cl_cb *next; list_for_each_entry_safe(pos, next, &list->list, list) { - if (pos->file_private) { - struct mei_cl *cl_tmp; - cl_tmp = (struct mei_cl *)pos->file_private; - if (mei_cl_cmp_id(cl, cl_tmp)) + if (pos->cl) { + if (mei_cl_cmp_id(cl, pos->cl)) list_del(&pos->list); } } diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c index 7193149678ec..acc994e3f20b 100644 --- a/drivers/misc/mei/interrupt.c +++ b/drivers/misc/mei/interrupt.c @@ -113,7 +113,7 @@ static int mei_irq_thread_read_client_message(struct mei_cl_cb *complete_list, goto quit; list_for_each_entry_safe(cb_pos, cb_next, &dev->read_list.list, list) { - cl = (struct mei_cl *)cb_pos->file_private; + cl = cb_pos->cl; if (cl && _mei_irq_thread_state_ok(cl, mei_hdr)) { cl->reading_state = MEI_READING; buffer = cb_pos->response_buffer.data + cb_pos->buf_idx; @@ -263,7 +263,7 @@ static void mei_client_connect_response(struct mei_device *dev, } list_for_each_entry_safe(pos, next, &dev->ctrl_rd_list.list, list) { - cl = (struct mei_cl *)pos->file_private; + cl = pos->cl; if (!cl) { list_del(&pos->list); return; @@ -301,7 +301,7 @@ static void mei_client_disconnect_response(struct mei_device *dev, rs->status); list_for_each_entry_safe(pos, next, &dev->ctrl_rd_list.list, list) { - cl = (struct mei_cl *)pos->file_private; + cl = pos->cl; if (!cl) { list_del(&pos->list); @@ -981,7 +981,7 @@ static int mei_irq_thread_write_handler(struct mei_cl_cb *cmpl_list, list = &dev->write_waiting_list; list_for_each_entry_safe(pos, next, &list->list, list) { - cl = (struct mei_cl *)pos->file_private; + cl = pos->cl; if (cl == NULL) continue; @@ -1039,7 +1039,7 @@ static int mei_irq_thread_write_handler(struct mei_cl_cb *cmpl_list, /* complete control write list CB */ dev_dbg(&dev->pdev->dev, "complete control write list cb.\n"); list_for_each_entry_safe(pos, next, &dev->ctrl_wr_list.list, list) { - cl = (struct mei_cl *) pos->file_private; + cl = pos->cl; if (!cl) { list_del(&pos->list); return -ENODEV; @@ -1077,7 +1077,7 @@ static int mei_irq_thread_write_handler(struct mei_cl_cb *cmpl_list, /* complete write list CB */ dev_dbg(&dev->pdev->dev, "complete write list cb.\n"); list_for_each_entry_safe(pos, next, &dev->write_list.list, list) { - cl = (struct mei_cl *)pos->file_private; + cl = pos->cl; if (cl == NULL) continue; @@ -1316,7 +1316,7 @@ end: list_for_each_entry_safe(cb_pos, cb_next, &complete_list.list, list) { - cl = (struct mei_cl *)cb_pos->file_private; + cl = cb_pos->cl; list_del(&cb_pos->list); if (cl) { if (cl != &dev->iamthif_cl) { diff --git a/drivers/misc/mei/iorw.c b/drivers/misc/mei/iorw.c index a1d9ba1a06e7..cc53ce766e88 100644 --- a/drivers/misc/mei/iorw.c +++ b/drivers/misc/mei/iorw.c @@ -71,7 +71,7 @@ struct mei_cl_cb *mei_io_cb_init(struct mei_cl *cl, struct file *fp) mei_io_list_init(cb); cb->file_object = fp; - cb->file_private = cl; + cb->cl = cl; cb->buf_idx = 0; return cb; } diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c index bea545a5ae2b..e0e39c498d12 100644 --- a/drivers/misc/mei/main.c +++ b/drivers/misc/mei/main.c @@ -189,13 +189,9 @@ static struct mei_cl_cb *find_read_list_entry( struct mei_cl_cb *next = NULL; dev_dbg(&dev->pdev->dev, "remove read_list CB\n"); - list_for_each_entry_safe(pos, next, &dev->read_list.list, list) { - struct mei_cl *cl_temp; - cl_temp = (struct mei_cl *)pos->file_private; - - if (mei_cl_cmp_id(cl, cl_temp)) + list_for_each_entry_safe(pos, next, &dev->read_list.list, list) + if (mei_cl_cmp_id(cl, pos->cl)) return pos; - } return NULL; } diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h index ce246b0fb2d6..da0c1f5eed9c 100644 --- a/drivers/misc/mei/mei_dev.h +++ b/drivers/misc/mei/mei_dev.h @@ -143,10 +143,17 @@ struct mei_message_data { }; +struct mei_cl; + +/* + * struct mei_cl_cb - file operation callback structure + * + * @cl - file client who is running this operation + */ struct mei_cl_cb { struct list_head list; + struct mei_cl *cl; enum mei_cb_major_types major_file_operations; - void *file_private; struct mei_message_data request_buffer; struct mei_message_data response_buffer; unsigned long buf_idx; |