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] |
On 28 Dec 2015 04:09, Dmitry V. Levin wrote: > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/personality.c > > + INTERNAL_SYSCALL_DECL (err); > + long ret = INTERNAL_SYSCALL (personality, err, 1, persona); > + > + /* Starting with kernel commit v2.6.29-6609-g11d06b2, personality syscall > + never fails to set the personality. However, due to architecture > + limitations of 32-bit kernels, personality syscall still may return > + an "error". */ > + if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (ret, err))) > + ret = -INTERNAL_SYSCALL_ERRNO (ret, err); > + return ret; > +} INTERNAL_SYSCALL returns the raw value from the kernel, so why do you need to test it directly ? > + if (personality (test_persona) != saved_persona || > + personality (0xffffffff) == -1 || > + personality (PER_LINUX) == -1 || > + personality (0xffffffff) != PER_LINUX) > + rc = 1; should this also verify errno is not changed ? > + (void) personality (saved_persona); we don't have __wur on this func, so the (void) is kind of pointless -mike
Attachment:
signature.asc
Description: Digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |