Commit 89343ecde51e7c287e8647a13f9e18f68a37c87c
1 parent
80210bcd
EFAULT - update __get_user() __put_user(), by Thayne Harbaugh.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3508 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
13 additions
and
13 deletions
linux-user/qemu.h
| ... | ... | @@ -206,22 +206,22 @@ int target_msync(abi_ulong start, abi_ulong len, int flags); |
| 206 | 206 | #define access_ok(type,addr,size) \ |
| 207 | 207 | (page_check_range((target_ulong)addr,size,(type==VERIFY_READ)?PAGE_READ:PAGE_WRITE)==0) |
| 208 | 208 | |
| 209 | -/* NOTE get_user and put_user use host addresses. */ | |
| 210 | -#define __put_user(x,ptr)\ | |
| 209 | +/* NOTE __get_user and __put_user use host pointers and don't check access. */ | |
| 210 | +#define __put_user(x, hptr)\ | |
| 211 | 211 | ({\ |
| 212 | - int size = sizeof(*ptr);\ | |
| 212 | + int size = sizeof(*hptr);\ | |
| 213 | 213 | switch(size) {\ |
| 214 | 214 | case 1:\ |
| 215 | - *(uint8_t *)(ptr) = (typeof(*ptr))(x);\ | |
| 215 | + *(uint8_t *)(hptr) = (typeof(*hptr))(x);\ | |
| 216 | 216 | break;\ |
| 217 | 217 | case 2:\ |
| 218 | - *(uint16_t *)(ptr) = tswap16((typeof(*ptr))(x));\ | |
| 218 | + *(uint16_t *)(hptr) = tswap16((typeof(*hptr))(x));\ | |
| 219 | 219 | break;\ |
| 220 | 220 | case 4:\ |
| 221 | - *(uint32_t *)(ptr) = tswap32((typeof(*ptr))(x));\ | |
| 221 | + *(uint32_t *)(hptr) = tswap32((typeof(*hptr))(x));\ | |
| 222 | 222 | break;\ |
| 223 | 223 | case 8:\ |
| 224 | - *(uint64_t *)(ptr) = tswap64((typeof(*ptr))(x));\ | |
| 224 | + *(uint64_t *)(hptr) = tswap64((typeof(*hptr))(x));\ | |
| 225 | 225 | break;\ |
| 226 | 226 | default:\ |
| 227 | 227 | abort();\ |
| ... | ... | @@ -229,21 +229,21 @@ int target_msync(abi_ulong start, abi_ulong len, int flags); |
| 229 | 229 | 0;\ |
| 230 | 230 | }) |
| 231 | 231 | |
| 232 | -#define __get_user(x, ptr) \ | |
| 232 | +#define __get_user(x, hptr) \ | |
| 233 | 233 | ({\ |
| 234 | - int size = sizeof(*ptr);\ | |
| 234 | + int size = sizeof(*hptr);\ | |
| 235 | 235 | switch(size) {\ |
| 236 | 236 | case 1:\ |
| 237 | - x = (typeof(*ptr))*(uint8_t *)(ptr);\ | |
| 237 | + x = (typeof(*hptr))*(uint8_t *)(hptr);\ | |
| 238 | 238 | break;\ |
| 239 | 239 | case 2:\ |
| 240 | - x = (typeof(*ptr))tswap16(*(uint16_t *)(ptr));\ | |
| 240 | + x = (typeof(*hptr))tswap16(*(uint16_t *)(hptr));\ | |
| 241 | 241 | break;\ |
| 242 | 242 | case 4:\ |
| 243 | - x = (typeof(*ptr))tswap32(*(uint32_t *)(ptr));\ | |
| 243 | + x = (typeof(*hptr))tswap32(*(uint32_t *)(hptr));\ | |
| 244 | 244 | break;\ |
| 245 | 245 | case 8:\ |
| 246 | - x = (typeof(*ptr))tswap64(*(uint64_t *)(ptr));\ | |
| 246 | + x = (typeof(*hptr))tswap64(*(uint64_t *)(hptr));\ | |
| 247 | 247 | break;\ |
| 248 | 248 | default:\ |
| 249 | 249 | abort();\ | ... | ... |