diff options
author | Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> | 2010-05-27 19:03:56 +0900 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2010-05-27 13:55:17 +0300 |
commit | a02c37891a9b2d7ce93f9d09455b4f67c4c23b95 (patch) | |
tree | 0d2b9b630a2ff0dab8fda16008762bcaa223ca93 /drivers/vhost/vhost.c | |
parent | d3553a52490dcac54f45083f8fa018e26c22e947 (diff) | |
download | op-kernel-dev-a02c37891a9b2d7ce93f9d09455b4f67c4c23b95.zip op-kernel-dev-a02c37891a9b2d7ce93f9d09455b4f67c4c23b95.tar.gz |
vhost: fix the memory leak which will happen when memory_access_ok fails
We need to free newmem when vhost_set_memory() fails to complete.
Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'drivers/vhost/vhost.c')
-rw-r--r-- | drivers/vhost/vhost.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index e366202..da21ae9 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -337,8 +337,10 @@ static long vhost_set_memory(struct vhost_dev *d, struct vhost_memory __user *m) return -EFAULT; } - if (!memory_access_ok(d, newmem, vhost_has_feature(d, VHOST_F_LOG_ALL))) + if (!memory_access_ok(d, newmem, vhost_has_feature(d, VHOST_F_LOG_ALL))) { + kfree(newmem); return -EFAULT; + } oldmem = d->memory; rcu_assign_pointer(d->memory, newmem); synchronize_rcu(); |