__readlink_chk: Assume HAVE_INLINED_SYSCALLS

Message ID 20180820144032.DC8D94028A147@oldenburg.str.redhat.com
State Committed
Headers

Commit Message

Florian Weimer Aug. 20, 2018, 2:40 p.m. UTC
  HAVE_INLINED_SYSCALLS is always defined on Linux.

2018-08-20  Florian Weimer  <fweimer@redhat.com>

	* sysdeps/unix/sysv/linux/generic/readlink_chk.c: Remove
	HAVE_INLINED_SYSCALLS conditionals
  

Comments

Adhemerval Zanella Aug. 20, 2018, 4:18 p.m. UTC | #1
On 20/08/2018 11:40, Florian Weimer wrote:
> HAVE_INLINED_SYSCALLS is always defined on Linux.
> 
> 2018-08-20  Florian Weimer  <fweimer@redhat.com>
> 
> 	* sysdeps/unix/sysv/linux/generic/readlink_chk.c: Remove
> 	HAVE_INLINED_SYSCALLS conditionals

LGTM.

> 
> diff --git a/sysdeps/unix/sysv/linux/generic/readlink_chk.c b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
> index 9240408a6b..5075e06dd1 100644
> --- a/sysdeps/unix/sysv/linux/generic/readlink_chk.c
> +++ b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
> @@ -19,10 +19,8 @@
>  #include <unistd.h>
>  #include <fcntl.h>
>  #include <sys/param.h>
> -#ifdef HAVE_INLINED_SYSCALLS
>  # include <errno.h>
>  # include <sysdep.h>
> -#endif
>  
>  
>  ssize_t
> @@ -31,9 +29,5 @@ __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
>    if (len > buflen)
>      __chk_fail ();
>  
> -#ifdef HAVE_INLINED_SYSCALLS
>    return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len);

Maybe use INLINE_SYSCALL_CALL ?

> -#else
> -  return __readlink (path, buf, len);
> -#endif
>  }
>
  
Adhemerval Zanella Aug. 20, 2018, 4:21 p.m. UTC | #2
On 20/08/2018 13:18, Adhemerval Zanella wrote:
> 
> 
> On 20/08/2018 11:40, Florian Weimer wrote:
>> HAVE_INLINED_SYSCALLS is always defined on Linux.
>>
>> 2018-08-20  Florian Weimer  <fweimer@redhat.com>
>>
>> 	* sysdeps/unix/sysv/linux/generic/readlink_chk.c: Remove
>> 	HAVE_INLINED_SYSCALLS conditionals
> 
> LGTM.

In fact, do we really need to have a duplicated Linux implementation
for this micro-optimization? Couldn't we just use default debug
one and call '__readlink' instead?

> 
>>
>> diff --git a/sysdeps/unix/sysv/linux/generic/readlink_chk.c b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
>> index 9240408a6b..5075e06dd1 100644
>> --- a/sysdeps/unix/sysv/linux/generic/readlink_chk.c
>> +++ b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
>> @@ -19,10 +19,8 @@
>>  #include <unistd.h>
>>  #include <fcntl.h>
>>  #include <sys/param.h>
>> -#ifdef HAVE_INLINED_SYSCALLS
>>  # include <errno.h>
>>  # include <sysdep.h>
>> -#endif
>>  
>>  
>>  ssize_t
>> @@ -31,9 +29,5 @@ __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
>>    if (len > buflen)
>>      __chk_fail ();
>>  
>> -#ifdef HAVE_INLINED_SYSCALLS
>>    return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len);
> 
> Maybe use INLINE_SYSCALL_CALL ?
> 
>> -#else
>> -  return __readlink (path, buf, len);
>> -#endif
>>  }
>>
  
Joseph Myers Aug. 20, 2018, 7:32 p.m. UTC | #3
On Mon, 20 Aug 2018, Florian Weimer wrote:

> -#ifdef HAVE_INLINED_SYSCALLS
>  # include <errno.h>
>  # include <sysdep.h>
> -#endif

Need to update the preprocessor indentation here for the removed #ifdef.
  
Florian Weimer Aug. 21, 2018, 1:12 p.m. UTC | #4
On 08/20/2018 09:32 PM, Joseph Myers wrote:
> On Mon, 20 Aug 2018, Florian Weimer wrote:
> 
>> -#ifdef HAVE_INLINED_SYSCALLS
>>   # include <errno.h>
>>   # include <sysdep.h>
>> -#endif
> Need to update the preprocessor indentation here for the removed #ifdef.

Oops, right.  The file is gone in the follow-up patch.  But I see I 
forgot to remove the #includes from debug/readlink_chk.c.  I will fix 
that too.

Florian
  

Patch

diff --git a/sysdeps/unix/sysv/linux/generic/readlink_chk.c b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
index 9240408a6b..5075e06dd1 100644
--- a/sysdeps/unix/sysv/linux/generic/readlink_chk.c
+++ b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
@@ -19,10 +19,8 @@ 
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/param.h>
-#ifdef HAVE_INLINED_SYSCALLS
 # include <errno.h>
 # include <sysdep.h>
-#endif
 
 
 ssize_t
@@ -31,9 +29,5 @@  __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
   if (len > buflen)
     __chk_fail ();
 
-#ifdef HAVE_INLINED_SYSCALLS
   return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len);
-#else
-  return __readlink (path, buf, len);
-#endif
 }