[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 14/19] linux-user: Implement *listxattr syscalls
From: |
riku . voipio |
Subject: |
[Qemu-devel] [PATCH 14/19] linux-user: Implement *listxattr syscalls |
Date: |
Tue, 31 Jan 2012 11:29:23 +0200 |
From: Peter Maydell <address@hidden>
Implement listxattr, flistxattr and llistxattr syscalls.
Signed-off-by: Peter Maydell <address@hidden>
Signed-off-by: Riku Voipio <address@hidden>
---
linux-user/syscall.c | 36 +++++++++++++++++++++++++++++++++++-
1 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 762115b..ee8899e 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7798,9 +7798,43 @@ abi_long do_syscall(void *cpu_env, int num, abi_long
arg1,
#ifdef TARGET_NR_setxattr
case TARGET_NR_listxattr:
case TARGET_NR_llistxattr:
+ {
+ void *p, *b = 0;
+ if (arg2) {
+ b = lock_user(VERIFY_WRITE, arg2, arg3, 0);
+ if (!b) {
+ ret = -TARGET_EFAULT;
+ break;
+ }
+ }
+ p = lock_user_string(arg1);
+ if (p) {
+ if (num == TARGET_NR_listxattr) {
+ ret = get_errno(listxattr(p, b, arg3));
+ } else {
+ ret = get_errno(llistxattr(p, b, arg3));
+ }
+ } else {
+ ret = -TARGET_EFAULT;
+ }
+ unlock_user(p, arg1, 0);
+ unlock_user(b, arg2, arg3);
+ break;
+ }
case TARGET_NR_flistxattr:
- ret = -TARGET_EOPNOTSUPP;
+ {
+ void *b = 0;
+ if (arg2) {
+ b = lock_user(VERIFY_WRITE, arg2, arg3, 0);
+ if (!b) {
+ ret = -TARGET_EFAULT;
+ break;
+ }
+ }
+ ret = get_errno(flistxattr(arg1, b, arg3));
+ unlock_user(b, arg2, arg3);
break;
+ }
case TARGET_NR_setxattr:
case TARGET_NR_lsetxattr:
{
--
1.7.5.4
- [Qemu-devel] [PATCH 00/19] Pending linux-user patches, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 14/19] linux-user: Implement *listxattr syscalls,
riku . voipio <=
- [Qemu-devel] [PATCH 01/19] linux-user: stack_base is now mandatory on all targets, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 07/19] linux-user/main.c: Add option to user-mode emulation so that user can specify log file name, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 04/19] linux-user: fake /proc/self/maps, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 15/19] linux-user: Add default-configs for mipsn32[el], riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 18/19] linux-user: Define TARGET_QEMU_ESIGRETURN for mips64, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 03/19] linux-user: add open() hijack infrastructure, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 10/19] linux-user/strace.c: Correct errno printing for mmap etc, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 11/19] linux-user: fix wait* syscall status returns, riku . voipio, 2012/01/31
- [Qemu-devel] [PATCH 06/19] linux-user: fake /proc/self/auxv, riku . voipio, 2012/01/31