[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-trivial] [PULL 09/46] linux-user/syscall.c: lock_iovec: unlock vec
From: |
Michael Tokarev |
Subject: |
[Qemu-trivial] [PULL 09/46] linux-user/syscall.c: lock_iovec: unlock vec[i] in failure processing code block |
Date: |
Tue, 10 Feb 2015 09:33:58 +0300 |
From: Chen Gang S <address@hidden>
When failure occurs during locking of vec[i], we also need to unlock all
already locked vec[i] in failure processing code block before return.
Code in unlock_user() checks vec[i].iov_base for NULL, so there's no
need not check it .
If error is EFAULT when "i == 0", vec[i].iov_base is NULL, we can just
skip it, so can still use "while (--i >= 0)" loop condition.
Signed-off-by: Chen Gang <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Michael Tokarev <address@hidden>
---
linux-user/syscall.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index d4398b9..7b6f482 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -1883,6 +1883,11 @@ static struct iovec *lock_iovec(int type, abi_ulong
target_addr,
return vec;
fail:
+ while (--i >= 0) {
+ if (tswapal(target_vec[i].iov_len) > 0) {
+ unlock_user(vec[i].iov_base, tswapal(target_vec[i].iov_base), 0);
+ }
+ }
unlock_user(target_vec, target_addr, 0);
fail2:
free(vec);
--
2.1.4
- [Qemu-trivial] [PULL 38/46] disas/sh4: Fix warning caused by missing 'static' attribute, (continued)
- [Qemu-trivial] [PULL 38/46] disas/sh4: Fix warning caused by missing 'static' attribute, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 29/46] QJSON: fix typo in author's email address, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 42/46] serial: Fix warnings caused by missing 'static' attribute, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 26/46] util/uri: uri_new() can't fail, drop dead error handling, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 45/46] vga: Fix warning caused by missing 'static' attribute, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 11/46] linux-user/main.c: Use TARGET_SIG* instead of SIG*, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 25/46] usb: Pair g_malloc() with g_free(), not free(), Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 10/46] linux-user/syscall.c: Fix typo issue for using target_vec[i].iov_len instead of target_vec[i].iov_base, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 18/46] vl.c: fix memory leak spotted by valgrind, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 43/46] spice: Add missing 'static' attribute, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 09/46] linux-user/syscall.c: lock_iovec: unlock vec[i] in failure processing code block,
Michael Tokarev <=
- [Qemu-trivial] [PULL 17/46] aes: remove a dead return statement, Michael Tokarev, 2015/02/10
- Re: [Qemu-trivial] [Qemu-devel] [PULL 00/46] Trivial patches for 2015-02-10, Peter Maydell, 2015/02/10
- [Qemu-trivial] [PULL 24/46] spapr_vio: Pair g_malloc() with g_free(), not free(), Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 03/46] Add tracing to xenfb., Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 32/46] rtl8139: g_malloc() can't fail, bury dead error handling, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 19/46] qemu-sockets: Fix buffer overflow in inet_parse(), Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 30/46] Fix name error in migration stream analyzation script, Michael Tokarev, 2015/02/10
- [Qemu-trivial] [PULL 28/46] util/uri: URI member path can be null, compare more carfully, Michael Tokarev, 2015/02/10