mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
vhost: check owner before we overwrite ubuf_info
If device has an owner, we shouldn't touch ubuf_info since it might be in use. Signed-off-by: Michael S. Tsirkin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
c2020be3c3
commit
05c0535194
3 changed files with 12 additions and 1 deletions
|
|
@ -1054,6 +1054,10 @@ static long vhost_net_set_owner(struct vhost_net *n)
|
|||
int r;
|
||||
|
||||
mutex_lock(&n->dev.mutex);
|
||||
if (vhost_dev_has_owner(&n->dev)) {
|
||||
r = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
r = vhost_net_set_ubuf_info(n);
|
||||
if (r)
|
||||
goto out;
|
||||
|
|
|
|||
|
|
@ -343,6 +343,12 @@ static int vhost_attach_cgroups(struct vhost_dev *dev)
|
|||
return attach.ret;
|
||||
}
|
||||
|
||||
/* Caller should have device mutex */
|
||||
bool vhost_dev_has_owner(struct vhost_dev *dev)
|
||||
{
|
||||
return dev->mm;
|
||||
}
|
||||
|
||||
/* Caller should have device mutex */
|
||||
long vhost_dev_set_owner(struct vhost_dev *dev)
|
||||
{
|
||||
|
|
@ -350,7 +356,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev)
|
|||
int err;
|
||||
|
||||
/* Is there an owner already? */
|
||||
if (dev->mm) {
|
||||
if (vhost_dev_has_owner(dev)) {
|
||||
err = -EBUSY;
|
||||
goto err_mm;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ struct vhost_dev {
|
|||
|
||||
long vhost_dev_init(struct vhost_dev *, struct vhost_virtqueue **vqs, int nvqs);
|
||||
long vhost_dev_set_owner(struct vhost_dev *dev);
|
||||
bool vhost_dev_has_owner(struct vhost_dev *dev);
|
||||
long vhost_dev_check_owner(struct vhost_dev *);
|
||||
struct vhost_memory *vhost_dev_reset_owner_prepare(void);
|
||||
void vhost_dev_reset_owner(struct vhost_dev *, struct vhost_memory *);
|
||||
|
|
|
|||
Loading…
Reference in a new issue