Re: [Qemu-devel] [PATCH] linux-user: Fix unlock_user() call in return from poll()

2011-03-22 Thread Aurelien Jarno
On Fri, Feb 25, 2011 at 10:27:40AM +, Peter Maydell wrote:
 Correct the broken attempt to calculate the third argument
 to unlock_user() in the code path which unlocked the pollfd
 array on return from poll() and ppoll() emulation. (This
 only caused a problem if unlock_user() wasn't a no-op, eg
 if DEBUG_REMAP is defined.)
 
 Signed-off-by: Peter Maydell peter.mayd...@linaro.org
 ---
  linux-user/syscall.c |4 +---
  1 files changed, 1 insertions(+), 3 deletions(-)

Thanks, applied.

 diff --git a/linux-user/syscall.c b/linux-user/syscall.c
 index cf8a4c3..822b863 100644
 --- a/linux-user/syscall.c
 +++ b/linux-user/syscall.c
 @@ -6314,10 +6314,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long 
 arg1,
  for(i = 0; i  nfds; i++) {
  target_pfd[i].revents = tswap16(pfd[i].revents);
  }
 -ret += nfds * (sizeof(struct target_pollfd)
 -   - sizeof(struct pollfd));
  }
 -unlock_user(target_pfd, arg1, ret);
 +unlock_user(target_pfd, arg1, sizeof(struct target_pollfd) * 
 nfds);
  }
  break;
  #endif
 -- 
 1.7.1
 
 
 

-- 
Aurelien Jarno  GPG: 1024D/F1BCDB73
aurel...@aurel32.net http://www.aurel32.net



[Qemu-devel] [PATCH] linux-user: Fix unlock_user() call in return from poll()

2011-02-25 Thread Peter Maydell
Correct the broken attempt to calculate the third argument
to unlock_user() in the code path which unlocked the pollfd
array on return from poll() and ppoll() emulation. (This
only caused a problem if unlock_user() wasn't a no-op, eg
if DEBUG_REMAP is defined.)

Signed-off-by: Peter Maydell peter.mayd...@linaro.org
---
 linux-user/syscall.c |4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index cf8a4c3..822b863 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6314,10 +6314,8 @@ abi_long do_syscall(void *cpu_env, int num, abi_long 
arg1,
 for(i = 0; i  nfds; i++) {
 target_pfd[i].revents = tswap16(pfd[i].revents);
 }
-ret += nfds * (sizeof(struct target_pollfd)
-   - sizeof(struct pollfd));
 }
-unlock_user(target_pfd, arg1, ret);
+unlock_user(target_pfd, arg1, sizeof(struct target_pollfd) * nfds);
 }
 break;
 #endif
-- 
1.7.1