This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: misc/sys/xattr.h: guard against linux uapi header inclusion


On 18/03/14 23:27, OndÅej BÃlka wrote:
> On Mon, Mar 10, 2014 at 11:17:07PM -0500, Serge Hallyn wrote:
>> If the glibc xattr.h header is included after the uapi header,
>> compilation fails due to an enum re-using a #define from the
>> uapi header.  Protect against this by guarding the define and
>> enum inclusions against each other.
>>
>> (A corresponding kernel patch has been sent here:
>> http://lkml.org/lkml/2014/3/7/331 )
>>
>> (See https://lists.debian.org/debian-glibc/2014/03/msg00029.html
>> and https://sourceware.org/glibc/wiki/Synchronizing_Headers
>> for more information.)
>>
>> Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
>>
> Looks ok, I commited that with appropriate ChangeLog.
>  

Has the kernel patch been reviewed?  This should not have been committed
before there was agreement between both parties that the patches were good.

The kernel patch in the link looks wrong to me. The define
__UAPI_DEF_XATTR is set to 0 whenever any glibc header is included, not
just sys/xattr.h. It should be wrapped in "#ifdef _SYS_XATTR_H".

The glibc patch is fine, but pointless until is the kernel patch is
accepted.

>> ---
>> misc/sys/xattr.h | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/misc/sys/xattr.h b/misc/sys/xattr.h
>> index 929cd87..796df90 100644
>> --- a/misc/sys/xattr.h
>> +++ b/misc/sys/xattr.h
>> @@ -26,6 +26,7 @@ __BEGIN_DECLS
>>  
>>  /* The following constants should be used for the fifth parameter of
>>     `*setxattr'.  */
>> +#ifndef __USE_KERNEL_XATTR_DEFS
>>  enum
>>  {
>>    XATTR_CREATE = 1,	/* set value, fail if attr already exists.  */
>> @@ -33,6 +34,7 @@ enum
>>    XATTR_REPLACE = 2	/* set value, fail if attr does not exist.  */
>>  #define XATTR_REPLACE	XATTR_REPLACE
>>  };
>> +#endif
>>  
>>  /* Set the attribute NAME of the file pointed to by PATH to VALUE (which
>>     is SIZE bytes long).  Return 0 on success, -1 for errors.  */
> 
> 
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]