mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 09:16:33 +00:00
db5247d9bf
Instead of lingering until the device is closed, this has us handle SIGKILL by: 1. marking the worker as killed so we no longer try to use it with new virtqueues and new flush operations. 2. setting the virtqueue to worker mapping so no new works are queued. 3. running all the exiting works. Suggested-by: Edward Adam Davis <eadavis@qq.com> Reported-and-tested-by: syzbot+98edc2df894917b3431f@syzkaller.appspotmail.com Message-Id: <tencent_546DA49414E876EEBECF2C78D26D242EE50A@qq.com> Signed-off-by: Mike Christie <michael.christie@oracle.com> Message-Id: <20240316004707.45557-9-michael.christie@oracle.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
15 lines
444 B
C
15 lines
444 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_SCHED_VHOST_TASK_H
|
|
#define _LINUX_SCHED_VHOST_TASK_H
|
|
|
|
struct vhost_task;
|
|
|
|
struct vhost_task *vhost_task_create(bool (*fn)(void *),
|
|
void (*handle_kill)(void *), void *arg,
|
|
const char *name);
|
|
void vhost_task_start(struct vhost_task *vtsk);
|
|
void vhost_task_stop(struct vhost_task *vtsk);
|
|
void vhost_task_wake(struct vhost_task *vtsk);
|
|
|
|
#endif /* _LINUX_SCHED_VHOST_TASK_H */
|