vhost: use kthread_run macro
Subsystems (4)
PATCH 1/1 vhost: use kthread_run macro
Code Cleanup, kthread_run is a convenient wrapper around kthread_create() that even wakes up the process for us. Use it and remove no longer needed temp task_struct variable.
Signed-off-by Bandan Das <[email protected]>
--- drivers/vhost/vhost.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
drivers/vhost/vhost.c +4 -8
@@ -366,7 +366,6 @@ EXPORT_SYMBOL_GPL(vhost_dev_has_owner);/* Caller should have device mutex */ long vhost_dev_set_owner (struct vhost_dev *dev) { -struct task_struct *worker;int err;/* Is there an owner already? */
@@ -377,15 +376,12 @@ long vhost_dev_set_owner(struct vhost_dev *dev)/* No owner, become one */ dev->mm =get_task_mm (current); - worker =kthread_create (vhost_worker, dev,"vhost-%d" , current->pid); -if (IS_ERR (worker)) { - err =PTR_ERR (worker); + dev->worker =kthread_run (vhost_worker, dev,"vhost-%d" , current->pid); +if (IS_ERR (dev->worker)) { + err =PTR_ERR (dev->worker); goto err_worker; } - dev->worker = worker; -wake_up_process (worker);/* avoid contributing to loadavg */ - err =vhost_attach_cgroups (dev);if (err) goto err_cgroup;
@@ -396,7 +392,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev)return 0 ; err_cgroup: -kthread_stop (worker); +kthread_stop (dev->worker); dev->worker =NULL ; err_worker:if (dev->mm)
Signature · 1 line
2.1.0
Michael S. Tsirkin
maintainerQuoted 24 lines · Bandan Das
Code Cleanup,
kthread_runis a convenient wrapper aroundkthread_create()that even wakes up the process for us. Use it and remove no longer needed temptask_structvariable.Signed-off-by Bandan Das <[email protected]>--- drivers/vhost/vhost.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)drivers/vhost/vhost.c +0
-1@@ -366,7 +366,6 @@ EXPORT_SYMBOL_GPL(vhost_dev_has_owner);/* Caller should have device mutex */ long vhost_dev_set_owner (struct vhost_dev *dev) { -struct task_struct *worker;int err;/* Is there an owner already? */
drivers/vhost/vhost.c long vhost_dev_set_owner(struct vhost_dev *dev) · line 382
Quoted 10 lines
drivers/vhost/vhost.c +3
-3@@ -377,15 +376,12 @@ long vhost_dev_set_owner(struct vhost_dev *dev)/* No owner, become one */ dev->mm =get_task_mm (current); - worker =kthread_create (vhost_worker, dev,"vhost-%d" , current->pid); -if (IS_ERR (worker)) { - err =PTR_ERR (worker); + dev->worker =kthread_run (vhost_worker, dev,"vhost-%d" , current->pid); +if (IS_ERR (dev->worker)) { + err =PTR_ERR (dev->worker); goto err_worker;
If you do it like this, dev->worker is not initialized when thread starts running. As thread itself might queue entries using vhost_work_queue, this seems wrong.
Quoted 19 lines
drivers/vhost/vhost.c +1
-4} - dev->worker = worker; -wake_up_process (worker);/* avoid contributing to loadavg */ - err =vhost_attach_cgroups (dev);if (err) goto err_cgroup;@@ -396,7 +392,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev)return 0 ; err_cgroup: -kthread_stop (worker); +kthread_stop (dev->worker); dev->worker =NULL ; err_worker:if (dev->mm)Signature · 1 line
2.1.0