diff options
author | Frajo | 2020-01-30 14:00:30 +0100 |
---|---|---|
committer | Laurent Vivier | 2020-10-23 14:25:22 +0200 |
commit | b94e2b4e34524c37b86f6acb8ad4a696969f2dd0 (patch) | |
tree | 5bb2493cc379d70052584e3d0171f59c76ab7a43 | |
parent | Fix stack smashing when handling PR_GET_PDEATHSIG (diff) | |
download | qemu-b94e2b4e34524c37b86f6acb8ad4a696969f2dd0.tar.gz qemu-b94e2b4e34524c37b86f6acb8ad4a696969f2dd0.tar.xz qemu-b94e2b4e34524c37b86f6acb8ad4a696969f2dd0.zip |
linux-user: Support f_flags in statfs64 when available.
Same as d4247ec2d79ef2477cb886fa688706b068119736 but for statfs64
When running rpm within qemu-arm-dynamic this could cause rpm fail with
an error like
"installing package A needs B MB on the C filesystem" depending on what
is in memory in f_flags.
https://github.com/rpm-software-management/rpm/blob/af06db1d5558870f7fb8f5c502572c2d27af5c71/lib/transaction.c#L164
Signed-off-by: Franz-Josef Haider <franz.haider@jolla.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <2e405fe7-efab-dae5-93d6-02575773fd6e@jolla.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
-rw-r--r-- | linux-user/syscall.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 3e0f14f2e6..cd520ae42e 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9787,6 +9787,11 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, __put_user(stfs.f_fsid.__val[1], &target_stfs->f_fsid.val[1]); __put_user(stfs.f_namelen, &target_stfs->f_namelen); __put_user(stfs.f_frsize, &target_stfs->f_frsize); +#ifdef _STATFS_F_FLAGS + __put_user(stfs.f_flags, &target_stfs->f_flags); +#else + __put_user(0, &target_stfs->f_flags); +#endif memset(target_stfs->f_spare, 0, sizeof(target_stfs->f_spare)); unlock_user_struct(target_stfs, arg3, 1); } |