diff options
author | Laurent Vivier <laurent@vivier.eu> | 2020-05-02 21:46:42 +0200 |
---|---|---|
committer | Laurent Vivier <laurent@vivier.eu> | 2020-05-27 16:27:48 +0200 |
commit | 6eb9dbf6a744f07b437e07e5f590625ebb7ab4cc (patch) | |
tree | 0932d4d856fe3000a8cd48444ac3374c1942bebe /linux-user/syscall.c | |
parent | ddc760832fa8cf5e93b9d9e6e854a5114ac63510 (diff) | |
download | qemu-6eb9dbf6a744f07b437e07e5f590625ebb7ab4cc.zip qemu-6eb9dbf6a744f07b437e07e5f590625ebb7ab4cc.tar.gz qemu-6eb9dbf6a744f07b437e07e5f590625ebb7ab4cc.tar.bz2 |
linux-user, alpha: fix oldumount syscall
When we try to bootstrap debian/lenny for alpha, it fails because
it cannot umount /.root directory:
...
Setting up initscripts (2.86.ds1-61) ...
umount: /.root: Function not implemented
dpkg: error processing initscripts (--configure):
subprocess post-installation script returned error exit status 1
dpkg: sysvinit: dependency problems, but configuring anyway as you request:
sysvinit depends on initscripts; however:
Package initscripts is not configured yet.
This is because, when we switched from syscall_nr.h to syscall.tbl,
the syscall #321 has been renamed from umount to oldumount and
syscall.c has not been updated to manage the new name.
oldumount has been introduced in linux 2.1.116pre1 by:
7d32756b2 ("Import 2.1.116pre1")
...
* We now support a flag for forced unmount like the other 'big iron'
* unixes. Our API is identical to OSF/1 to avoid making a mess of AMD
...
Fixes: 6116aea994 ("linux-user, alpha: add syscall table generation support")
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20200502194642.32823-1-laurent@vivier.eu>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'linux-user/syscall.c')
-rw-r--r-- | linux-user/syscall.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 05f0391..e89b815 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8028,8 +8028,13 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, } } return ret; -#ifdef TARGET_NR_umount +#if defined(TARGET_NR_umount) || defined(TARGET_NR_oldumount) +#if defined(TARGET_NR_umount) case TARGET_NR_umount: +#endif +#if defined(TARGET_NR_oldumount) + case TARGET_NR_oldumount: +#endif if (!(p = lock_user_string(arg1))) return -TARGET_EFAULT; ret = get_errno(umount(p)); |