Commit 4ce6f8de1aa07cd0587f100200f949a2defdf5cb
1 parent
a029baa4
Fix statfs(64) syscall wrapper, by Andreas Schwab.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3082 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
12 additions
and
6 deletions
linux-user/syscall.c
... | ... | @@ -3352,7 +3352,8 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, |
3352 | 3352 | put_user(stfs.f_bavail, &target_stfs->f_bavail); |
3353 | 3353 | put_user(stfs.f_files, &target_stfs->f_files); |
3354 | 3354 | put_user(stfs.f_ffree, &target_stfs->f_ffree); |
3355 | - put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid); | |
3355 | + put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid.val[0]); | |
3356 | + put_user(stfs.f_fsid.__val[1], &target_stfs->f_fsid.val[1]); | |
3356 | 3357 | put_user(stfs.f_namelen, &target_stfs->f_namelen); |
3357 | 3358 | unlock_user_struct(target_stfs, arg2, 1); |
3358 | 3359 | } |
... | ... | @@ -3378,7 +3379,8 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, |
3378 | 3379 | put_user(stfs.f_bavail, &target_stfs->f_bavail); |
3379 | 3380 | put_user(stfs.f_files, &target_stfs->f_files); |
3380 | 3381 | put_user(stfs.f_ffree, &target_stfs->f_ffree); |
3381 | - put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid); | |
3382 | + put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid.val[0]); | |
3383 | + put_user(stfs.f_fsid.__val[1], &target_stfs->f_fsid.val[1]); | |
3382 | 3384 | put_user(stfs.f_namelen, &target_stfs->f_namelen); |
3383 | 3385 | unlock_user_struct(target_stfs, arg3, 0); |
3384 | 3386 | } | ... | ... |
linux-user/syscall_defs.h
... | ... | @@ -1356,6 +1356,10 @@ struct target_stat64 { |
1356 | 1356 | #error unsupported CPU |
1357 | 1357 | #endif |
1358 | 1358 | |
1359 | +typedef struct { | |
1360 | + int val[2]; | |
1361 | +} target_fsid_t; | |
1362 | + | |
1359 | 1363 | #ifdef TARGET_MIPS |
1360 | 1364 | struct target_statfs { |
1361 | 1365 | target_long f_type; |
... | ... | @@ -1368,7 +1372,7 @@ struct target_statfs { |
1368 | 1372 | target_long f_bavail; |
1369 | 1373 | |
1370 | 1374 | /* Linux specials */ |
1371 | - int f_fsid; | |
1375 | + target_fsid_t f_fsid; | |
1372 | 1376 | target_long f_namelen; |
1373 | 1377 | target_long f_spare[6]; |
1374 | 1378 | }; |
... | ... | @@ -1383,7 +1387,7 @@ struct target_statfs64 { |
1383 | 1387 | uint64_t f_files; |
1384 | 1388 | uint64_t f_ffree; |
1385 | 1389 | uint64_t f_bavail; |
1386 | - int f_fsid; | |
1390 | + target_fsid_t f_fsid; | |
1387 | 1391 | uint32_t f_namelen; |
1388 | 1392 | uint32_t f_spare[6]; |
1389 | 1393 | }; |
... | ... | @@ -1396,7 +1400,7 @@ struct target_statfs { |
1396 | 1400 | uint32_t f_bavail; |
1397 | 1401 | uint32_t f_files; |
1398 | 1402 | uint32_t f_ffree; |
1399 | - int f_fsid; | |
1403 | + target_fsid_t f_fsid; | |
1400 | 1404 | uint32_t f_namelen; |
1401 | 1405 | uint32_t f_frsize; |
1402 | 1406 | uint32_t f_spare[5]; |
... | ... | @@ -1410,7 +1414,7 @@ struct target_statfs64 { |
1410 | 1414 | uint64_t f_bavail; |
1411 | 1415 | uint64_t f_files; |
1412 | 1416 | uint64_t f_ffree; |
1413 | - int f_fsid; | |
1417 | + target_fsid_t f_fsid; | |
1414 | 1418 | uint32_t f_namelen; |
1415 | 1419 | uint32_t f_frsize; |
1416 | 1420 | uint32_t f_spare[5]; | ... | ... |