Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1335488
| Path | csiph.com!news.mixmin.net!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Greg Kurz <gkurz@linux.vnet.ibm.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH v2 1/3] vhost: fix error path in vhost_init_used() |
| Date | Tue, 16 Feb 2016 16:00:03 +0100 |
| Message-ID | <r2PgD-KD-33@gated-at.bofh.it> (permalink) |
| References | <r2PgD-KD-19@gated-at.bofh.it> |
| X-Original-To | "Michael S. Tsirkin" <mst@redhat.com> |
| X-Ibm-Helo | d06dlp03.portsmouth.uk.ibm.com |
| X-Ibm-Mailfrom | gkurz@linux.vnet.ibm.com |
| X-Ibm-Rcptto | kvm@vger.kernel.org;linux-kernel@vger.kernel.org;netdev@vger.kernel.org |
| User-Agent | StGit/0.17.1-dirty |
| MIME-Version | 1.0 |
| Content-Type | text/plain; charset="utf-8" |
| Content-Transfer-Encoding | 7bit |
| X-Tm-As-Mml | disable |
| X-Content-Scanned | Fidelis XPS MAILER |
| X-Cbid | 16021614-0009-0000-0000-000007A7187E |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 46 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Cornelia Huck <cornelia.huck@de.ibm.com>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org |
| X-Original-Date | Tue, 16 Feb 2016 15:54:28 +0100 |
| X-Original-Message-ID | <20160216145423.7448.36243.stgit@bahia.lab.toulouse-stg.fr.ibm.com> |
| X-Original-References | <20160216145418.7448.71329.stgit@bahia.lab.toulouse-stg.fr.ibm.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1335488 |
Show key headers only | View raw
We don't want side effects. If something fails, we rollback vq->is_le to
its previous value.
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
---
drivers/vhost/vhost.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index ad2146a9ab2d..236553e81027 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -1156,6 +1156,8 @@ int vhost_init_used(struct vhost_virtqueue *vq)
{
__virtio16 last_used_idx;
int r;
+ bool is_le = vq->is_le;
+
if (!vq->private_data) {
vq->is_le = virtio_legacy_is_little_endian();
return 0;
@@ -1165,15 +1167,20 @@ int vhost_init_used(struct vhost_virtqueue *vq)
r = vhost_update_used_flags(vq);
if (r)
- return r;
+ goto err;
vq->signalled_used_valid = false;
- if (!access_ok(VERIFY_READ, &vq->used->idx, sizeof vq->used->idx))
- return -EFAULT;
+ if (!access_ok(VERIFY_READ, &vq->used->idx, sizeof vq->used->idx)) {
+ r = -EFAULT;
+ goto err;
+ }
r = __get_user(last_used_idx, &vq->used->idx);
if (r)
- return r;
+ goto err;
vq->last_used_idx = vhost16_to_cpu(vq, last_used_idx);
return 0;
+err:
+ vq->is_le = is_le;
+ return r;
}
EXPORT_SYMBOL_GPL(vhost_init_used);
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH v2 1/3] vhost: fix error path in vhost_init_used() Greg Kurz <gkurz@linux.vnet.ibm.com> - 2016-02-16 16:00 +0100
csiph-web