Revision fb5590f7
b/linux-user/syscall.c | ||
---|---|---|
7798 | 7798 |
#ifdef TARGET_NR_setxattr |
7799 | 7799 |
case TARGET_NR_listxattr: |
7800 | 7800 |
case TARGET_NR_llistxattr: |
7801 |
{ |
|
7802 |
void *p, *b = 0; |
|
7803 |
if (arg2) { |
|
7804 |
b = lock_user(VERIFY_WRITE, arg2, arg3, 0); |
|
7805 |
if (!b) { |
|
7806 |
ret = -TARGET_EFAULT; |
|
7807 |
break; |
|
7808 |
} |
|
7809 |
} |
|
7810 |
p = lock_user_string(arg1); |
|
7811 |
if (p) { |
|
7812 |
if (num == TARGET_NR_listxattr) { |
|
7813 |
ret = get_errno(listxattr(p, b, arg3)); |
|
7814 |
} else { |
|
7815 |
ret = get_errno(llistxattr(p, b, arg3)); |
|
7816 |
} |
|
7817 |
} else { |
|
7818 |
ret = -TARGET_EFAULT; |
|
7819 |
} |
|
7820 |
unlock_user(p, arg1, 0); |
|
7821 |
unlock_user(b, arg2, arg3); |
|
7822 |
break; |
|
7823 |
} |
|
7801 | 7824 |
case TARGET_NR_flistxattr: |
7802 |
ret = -TARGET_EOPNOTSUPP; |
|
7825 |
{ |
|
7826 |
void *b = 0; |
|
7827 |
if (arg2) { |
|
7828 |
b = lock_user(VERIFY_WRITE, arg2, arg3, 0); |
|
7829 |
if (!b) { |
|
7830 |
ret = -TARGET_EFAULT; |
|
7831 |
break; |
|
7832 |
} |
|
7833 |
} |
|
7834 |
ret = get_errno(flistxattr(arg1, b, arg3)); |
|
7835 |
unlock_user(b, arg2, arg3); |
|
7803 | 7836 |
break; |
7837 |
} |
|
7804 | 7838 |
case TARGET_NR_setxattr: |
7805 | 7839 |
case TARGET_NR_lsetxattr: |
7806 | 7840 |
{ |
Also available in: Unified diff