]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00162354 ipuv3 device: correct kthread operation for split task
authorJason Chen <b02280@freescale.com>
Wed, 16 Nov 2011 09:23:07 +0000 (17:23 +0800)
committerOliver Wendt <ow@karo-electronics.de>
Mon, 30 Sep 2013 12:10:03 +0000 (14:10 +0200)
make could_finish to volatile.
do_exit in split_task_thread instead of kthread_stop.

Signed-off-by: Jason Chen <b02280@freescale.com>
drivers/mxc/ipu3/ipu_device.c

index 0f68441fc83bf57acc7073bafac3cae8de4e5451..9395d8a6661cfd135c69ef73ce7a7b2d384541e6 100644 (file)
@@ -144,7 +144,7 @@ struct ipu_split_task {
        struct ipu_task task;
        struct ipu_task_entry *parent_task;
        struct task_struct *thread;
-       bool could_finish;
+       volatile bool could_finish;
        wait_queue_head_t waitq;
        int ret;
 
@@ -944,7 +944,7 @@ static int split_task_thread(void *data)
 
        wake_up_interruptible(&t->waitq);
 
-       return 0;
+       do_exit(0);
 }
 
 static int create_split_task(
@@ -1176,7 +1176,6 @@ static int queue_split_task(struct ipu_task_entry *t)
        } else {
                for (i = 0; i < size; i++) {
                        wait_event_interruptible(sp_task[i].waitq, sp_task[i].could_finish);
-                       kthread_stop(sp_task[i].thread);
                        if (sp_task[i].ret < 0) {
                                ret = sp_task[i].ret;
                                dev_err(t->dev,