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,7 +3352,8 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
3352 | put_user(stfs.f_bavail, &target_stfs->f_bavail); | 3352 | put_user(stfs.f_bavail, &target_stfs->f_bavail); |
3353 | put_user(stfs.f_files, &target_stfs->f_files); | 3353 | put_user(stfs.f_files, &target_stfs->f_files); |
3354 | put_user(stfs.f_ffree, &target_stfs->f_ffree); | 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 | put_user(stfs.f_namelen, &target_stfs->f_namelen); | 3357 | put_user(stfs.f_namelen, &target_stfs->f_namelen); |
3357 | unlock_user_struct(target_stfs, arg2, 1); | 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,7 +3379,8 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
3378 | put_user(stfs.f_bavail, &target_stfs->f_bavail); | 3379 | put_user(stfs.f_bavail, &target_stfs->f_bavail); |
3379 | put_user(stfs.f_files, &target_stfs->f_files); | 3380 | put_user(stfs.f_files, &target_stfs->f_files); |
3380 | put_user(stfs.f_ffree, &target_stfs->f_ffree); | 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 | put_user(stfs.f_namelen, &target_stfs->f_namelen); | 3384 | put_user(stfs.f_namelen, &target_stfs->f_namelen); |
3383 | unlock_user_struct(target_stfs, arg3, 0); | 3385 | unlock_user_struct(target_stfs, arg3, 0); |
3384 | } | 3386 | } |
linux-user/syscall_defs.h
@@ -1356,6 +1356,10 @@ struct target_stat64 { | @@ -1356,6 +1356,10 @@ struct target_stat64 { | ||
1356 | #error unsupported CPU | 1356 | #error unsupported CPU |
1357 | #endif | 1357 | #endif |
1358 | 1358 | ||
1359 | +typedef struct { | ||
1360 | + int val[2]; | ||
1361 | +} target_fsid_t; | ||
1362 | + | ||
1359 | #ifdef TARGET_MIPS | 1363 | #ifdef TARGET_MIPS |
1360 | struct target_statfs { | 1364 | struct target_statfs { |
1361 | target_long f_type; | 1365 | target_long f_type; |
@@ -1368,7 +1372,7 @@ struct target_statfs { | @@ -1368,7 +1372,7 @@ struct target_statfs { | ||
1368 | target_long f_bavail; | 1372 | target_long f_bavail; |
1369 | 1373 | ||
1370 | /* Linux specials */ | 1374 | /* Linux specials */ |
1371 | - int f_fsid; | 1375 | + target_fsid_t f_fsid; |
1372 | target_long f_namelen; | 1376 | target_long f_namelen; |
1373 | target_long f_spare[6]; | 1377 | target_long f_spare[6]; |
1374 | }; | 1378 | }; |
@@ -1383,7 +1387,7 @@ struct target_statfs64 { | @@ -1383,7 +1387,7 @@ struct target_statfs64 { | ||
1383 | uint64_t f_files; | 1387 | uint64_t f_files; |
1384 | uint64_t f_ffree; | 1388 | uint64_t f_ffree; |
1385 | uint64_t f_bavail; | 1389 | uint64_t f_bavail; |
1386 | - int f_fsid; | 1390 | + target_fsid_t f_fsid; |
1387 | uint32_t f_namelen; | 1391 | uint32_t f_namelen; |
1388 | uint32_t f_spare[6]; | 1392 | uint32_t f_spare[6]; |
1389 | }; | 1393 | }; |
@@ -1396,7 +1400,7 @@ struct target_statfs { | @@ -1396,7 +1400,7 @@ struct target_statfs { | ||
1396 | uint32_t f_bavail; | 1400 | uint32_t f_bavail; |
1397 | uint32_t f_files; | 1401 | uint32_t f_files; |
1398 | uint32_t f_ffree; | 1402 | uint32_t f_ffree; |
1399 | - int f_fsid; | 1403 | + target_fsid_t f_fsid; |
1400 | uint32_t f_namelen; | 1404 | uint32_t f_namelen; |
1401 | uint32_t f_frsize; | 1405 | uint32_t f_frsize; |
1402 | uint32_t f_spare[5]; | 1406 | uint32_t f_spare[5]; |
@@ -1410,7 +1414,7 @@ struct target_statfs64 { | @@ -1410,7 +1414,7 @@ struct target_statfs64 { | ||
1410 | uint64_t f_bavail; | 1414 | uint64_t f_bavail; |
1411 | uint64_t f_files; | 1415 | uint64_t f_files; |
1412 | uint64_t f_ffree; | 1416 | uint64_t f_ffree; |
1413 | - int f_fsid; | 1417 | + target_fsid_t f_fsid; |
1414 | uint32_t f_namelen; | 1418 | uint32_t f_namelen; |
1415 | uint32_t f_frsize; | 1419 | uint32_t f_frsize; |
1416 | uint32_t f_spare[5]; | 1420 | uint32_t f_spare[5]; |