Patchwork [1/2] alpha-linux-user: Fix umount syscall numbers

login
register
mail settings
Submitter Richard Henderson
Date July 24, 2013, 7:50 p.m.
Message ID <1374695401-22032-1-git-send-email-rth@twiddle.net>
Download mbox | patch
Permalink /patch/261513/
State New
Headers show

Comments

Richard Henderson - July 24, 2013, 7:50 p.m.
It has been pointed out on LKML that the alpha umount syscall numbers
are named wrong, and a patch to rectify that has been posted for 3.11.

Glibc works around this by treating NR_umount as NR_umount2 if
NR_oldumount exists.  That's more complicated than we need in QEMU,
given that we control linux-user/*/syscall_nr.h.

This is the last instance of TARGET_NR_oldumount, so delete that from
the strace.list.

Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 linux-user/alpha/syscall_nr.h | 4 ++--
 linux-user/strace.list        | 3 ---
 linux-user/syscall.c          | 2 +-
 3 files changed, 3 insertions(+), 6 deletions(-)
Richard Henderson - Aug. 17, 2013, 6:24 a.m.
Ping.

r~


On 07/24/2013 12:50 PM, Richard Henderson wrote:
> It has been pointed out on LKML that the alpha umount syscall numbers
> are named wrong, and a patch to rectify that has been posted for 3.11.
> 
> Glibc works around this by treating NR_umount as NR_umount2 if
> NR_oldumount exists.  That's more complicated than we need in QEMU,
> given that we control linux-user/*/syscall_nr.h.
> 
> This is the last instance of TARGET_NR_oldumount, so delete that from
> the strace.list.
> 
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  linux-user/alpha/syscall_nr.h | 4 ++--
>  linux-user/strace.list        | 3 ---
>  linux-user/syscall.c          | 2 +-
>  3 files changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/linux-user/alpha/syscall_nr.h b/linux-user/alpha/syscall_nr.h
> index ac2b6e2..d52d76e 100644
> --- a/linux-user/alpha/syscall_nr.h
> +++ b/linux-user/alpha/syscall_nr.h
> @@ -20,7 +20,7 @@
>  #define TARGET_NR_lseek		 19
>  #define TARGET_NR_getxpid		 20
>  #define TARGET_NR_osf_mount		 21
> -#define TARGET_NR_umount		 22
> +#define TARGET_NR_umount2		 22
>  #define TARGET_NR_setuid		 23
>  #define TARGET_NR_getxuid		 24
>  #define TARGET_NR_exec_with_loader	 25	/* not implemented */
> @@ -255,7 +255,7 @@
>  #define TARGET_NR_sysinfo		318
>  #define TARGET_NR__sysctl		319
>  /* 320 was sys_idle.  */
> -#define TARGET_NR_oldumount		321
> +#define TARGET_NR_umount		321
>  #define TARGET_NR_swapon		322
>  #define TARGET_NR_times		323
>  #define TARGET_NR_personality	324
> diff --git a/linux-user/strace.list b/linux-user/strace.list
> index 08f115d..4f9c364 100644
> --- a/linux-user/strace.list
> +++ b/linux-user/strace.list
> @@ -612,9 +612,6 @@
>  #ifdef TARGET_NR_oldstat
>  { TARGET_NR_oldstat, "oldstat" , NULL, NULL, NULL },
>  #endif
> -#ifdef TARGET_NR_oldumount
> -{ TARGET_NR_oldumount, "oldumount" , NULL, NULL, NULL },
> -#endif
>  #ifdef TARGET_NR_olduname
>  { TARGET_NR_olduname, "olduname" , NULL, NULL, NULL },
>  #endif
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 00a0390..e42c20e 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -5719,7 +5719,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
>              unlock_user(p, arg1, 0);
>          }
>          break;
> -#ifdef TARGET_NR_umount2 /* not on alpha */
> +#ifdef TARGET_NR_umount2
>      case TARGET_NR_umount2:
>          if (!(p = lock_user_string(arg1)))
>              goto efault;
>
Richard Henderson - Aug. 26, 2013, 8:26 p.m.
Ping.

r~

On 08/16/2013 11:24 PM, Richard Henderson wrote:
> Ping.
> 
> r~
> 
> 
> On 07/24/2013 12:50 PM, Richard Henderson wrote:
>> It has been pointed out on LKML that the alpha umount syscall numbers
>> are named wrong, and a patch to rectify that has been posted for 3.11.
>>
>> Glibc works around this by treating NR_umount as NR_umount2 if
>> NR_oldumount exists.  That's more complicated than we need in QEMU,
>> given that we control linux-user/*/syscall_nr.h.
>>
>> This is the last instance of TARGET_NR_oldumount, so delete that from
>> the strace.list.
>>
>> Signed-off-by: Richard Henderson <rth@twiddle.net>
>> ---
>>  linux-user/alpha/syscall_nr.h | 4 ++--
>>  linux-user/strace.list        | 3 ---
>>  linux-user/syscall.c          | 2 +-
>>  3 files changed, 3 insertions(+), 6 deletions(-)
>>
>> diff --git a/linux-user/alpha/syscall_nr.h b/linux-user/alpha/syscall_nr.h
>> index ac2b6e2..d52d76e 100644
>> --- a/linux-user/alpha/syscall_nr.h
>> +++ b/linux-user/alpha/syscall_nr.h
>> @@ -20,7 +20,7 @@
>>  #define TARGET_NR_lseek		 19
>>  #define TARGET_NR_getxpid		 20
>>  #define TARGET_NR_osf_mount		 21
>> -#define TARGET_NR_umount		 22
>> +#define TARGET_NR_umount2		 22
>>  #define TARGET_NR_setuid		 23
>>  #define TARGET_NR_getxuid		 24
>>  #define TARGET_NR_exec_with_loader	 25	/* not implemented */
>> @@ -255,7 +255,7 @@
>>  #define TARGET_NR_sysinfo		318
>>  #define TARGET_NR__sysctl		319
>>  /* 320 was sys_idle.  */
>> -#define TARGET_NR_oldumount		321
>> +#define TARGET_NR_umount		321
>>  #define TARGET_NR_swapon		322
>>  #define TARGET_NR_times		323
>>  #define TARGET_NR_personality	324
>> diff --git a/linux-user/strace.list b/linux-user/strace.list
>> index 08f115d..4f9c364 100644
>> --- a/linux-user/strace.list
>> +++ b/linux-user/strace.list
>> @@ -612,9 +612,6 @@
>>  #ifdef TARGET_NR_oldstat
>>  { TARGET_NR_oldstat, "oldstat" , NULL, NULL, NULL },
>>  #endif
>> -#ifdef TARGET_NR_oldumount
>> -{ TARGET_NR_oldumount, "oldumount" , NULL, NULL, NULL },
>> -#endif
>>  #ifdef TARGET_NR_olduname
>>  { TARGET_NR_olduname, "olduname" , NULL, NULL, NULL },
>>  #endif
>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
>> index 00a0390..e42c20e 100644
>> --- a/linux-user/syscall.c
>> +++ b/linux-user/syscall.c
>> @@ -5719,7 +5719,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
>>              unlock_user(p, arg1, 0);
>>          }
>>          break;
>> -#ifdef TARGET_NR_umount2 /* not on alpha */
>> +#ifdef TARGET_NR_umount2
>>      case TARGET_NR_umount2:
>>          if (!(p = lock_user_string(arg1)))
>>              goto efault;
>>
>
Riku Voipio - Sept. 9, 2013, 2 p.m.
Hi,

On Mon, Aug 26, 2013 at 01:26:11PM -0700, Richard Henderson wrote:
> Ping.

Sorry for the delay, adding it to the next pull request.

Riku

> On 08/16/2013 11:24 PM, Richard Henderson wrote:
> > Ping.
> > 
> > r~
> > 
> > 
> > On 07/24/2013 12:50 PM, Richard Henderson wrote:
> >> It has been pointed out on LKML that the alpha umount syscall numbers
> >> are named wrong, and a patch to rectify that has been posted for 3.11.
> >>
> >> Glibc works around this by treating NR_umount as NR_umount2 if
> >> NR_oldumount exists.  That's more complicated than we need in QEMU,
> >> given that we control linux-user/*/syscall_nr.h.
> >>
> >> This is the last instance of TARGET_NR_oldumount, so delete that from
> >> the strace.list.
> >>
> >> Signed-off-by: Richard Henderson <rth@twiddle.net>
> >> ---
> >>  linux-user/alpha/syscall_nr.h | 4 ++--
> >>  linux-user/strace.list        | 3 ---
> >>  linux-user/syscall.c          | 2 +-
> >>  3 files changed, 3 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/linux-user/alpha/syscall_nr.h b/linux-user/alpha/syscall_nr.h
> >> index ac2b6e2..d52d76e 100644
> >> --- a/linux-user/alpha/syscall_nr.h
> >> +++ b/linux-user/alpha/syscall_nr.h
> >> @@ -20,7 +20,7 @@
> >>  #define TARGET_NR_lseek		 19
> >>  #define TARGET_NR_getxpid		 20
> >>  #define TARGET_NR_osf_mount		 21
> >> -#define TARGET_NR_umount		 22
> >> +#define TARGET_NR_umount2		 22
> >>  #define TARGET_NR_setuid		 23
> >>  #define TARGET_NR_getxuid		 24
> >>  #define TARGET_NR_exec_with_loader	 25	/* not implemented */
> >> @@ -255,7 +255,7 @@
> >>  #define TARGET_NR_sysinfo		318
> >>  #define TARGET_NR__sysctl		319
> >>  /* 320 was sys_idle.  */
> >> -#define TARGET_NR_oldumount		321
> >> +#define TARGET_NR_umount		321
> >>  #define TARGET_NR_swapon		322
> >>  #define TARGET_NR_times		323
> >>  #define TARGET_NR_personality	324
> >> diff --git a/linux-user/strace.list b/linux-user/strace.list
> >> index 08f115d..4f9c364 100644
> >> --- a/linux-user/strace.list
> >> +++ b/linux-user/strace.list
> >> @@ -612,9 +612,6 @@
> >>  #ifdef TARGET_NR_oldstat
> >>  { TARGET_NR_oldstat, "oldstat" , NULL, NULL, NULL },
> >>  #endif
> >> -#ifdef TARGET_NR_oldumount
> >> -{ TARGET_NR_oldumount, "oldumount" , NULL, NULL, NULL },
> >> -#endif
> >>  #ifdef TARGET_NR_olduname
> >>  { TARGET_NR_olduname, "olduname" , NULL, NULL, NULL },
> >>  #endif
> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> >> index 00a0390..e42c20e 100644
> >> --- a/linux-user/syscall.c
> >> +++ b/linux-user/syscall.c
> >> @@ -5719,7 +5719,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
> >>              unlock_user(p, arg1, 0);
> >>          }
> >>          break;
> >> -#ifdef TARGET_NR_umount2 /* not on alpha */
> >> +#ifdef TARGET_NR_umount2
> >>      case TARGET_NR_umount2:
> >>          if (!(p = lock_user_string(arg1)))
> >>              goto efault;
> >>
> >

Patch

diff --git a/linux-user/alpha/syscall_nr.h b/linux-user/alpha/syscall_nr.h
index ac2b6e2..d52d76e 100644
--- a/linux-user/alpha/syscall_nr.h
+++ b/linux-user/alpha/syscall_nr.h
@@ -20,7 +20,7 @@ 
 #define TARGET_NR_lseek		 19
 #define TARGET_NR_getxpid		 20
 #define TARGET_NR_osf_mount		 21
-#define TARGET_NR_umount		 22
+#define TARGET_NR_umount2		 22
 #define TARGET_NR_setuid		 23
 #define TARGET_NR_getxuid		 24
 #define TARGET_NR_exec_with_loader	 25	/* not implemented */
@@ -255,7 +255,7 @@ 
 #define TARGET_NR_sysinfo		318
 #define TARGET_NR__sysctl		319
 /* 320 was sys_idle.  */
-#define TARGET_NR_oldumount		321
+#define TARGET_NR_umount		321
 #define TARGET_NR_swapon		322
 #define TARGET_NR_times		323
 #define TARGET_NR_personality	324
diff --git a/linux-user/strace.list b/linux-user/strace.list
index 08f115d..4f9c364 100644
--- a/linux-user/strace.list
+++ b/linux-user/strace.list
@@ -612,9 +612,6 @@ 
 #ifdef TARGET_NR_oldstat
 { TARGET_NR_oldstat, "oldstat" , NULL, NULL, NULL },
 #endif
-#ifdef TARGET_NR_oldumount
-{ TARGET_NR_oldumount, "oldumount" , NULL, NULL, NULL },
-#endif
 #ifdef TARGET_NR_olduname
 { TARGET_NR_olduname, "olduname" , NULL, NULL, NULL },
 #endif
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 00a0390..e42c20e 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5719,7 +5719,7 @@  abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
             unlock_user(p, arg1, 0);
         }
         break;
-#ifdef TARGET_NR_umount2 /* not on alpha */
+#ifdef TARGET_NR_umount2
     case TARGET_NR_umount2:
         if (!(p = lock_user_string(arg1)))
             goto efault;