From: T.J. Mercier
Sent: 14 March 2022 23:45
On Thu, Mar 10, 2022 at 11:33 AM Todd Kjos tkjos@google.com wrote:
On Wed, Mar 9, 2022 at 8:52 AM T.J. Mercier tjmercier@google.com wrote:
The kernel interface should use types that the kernel defines instead of pid_t and uid_t, whose definiton is owned by libc. This fixes the header so that it can be included without first including sys/types.h.
Signed-off-by: T.J. Mercier tjmercier@google.com
include/uapi/linux/android/binder.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h index 169fd5069a1a..aa28454dbca3 100644 --- a/include/uapi/linux/android/binder.h +++ b/include/uapi/linux/android/binder.h @@ -289,8 +289,8 @@ struct binder_transaction_data {
/* General information about the transaction. */ __u32 flags;
pid_t sender_pid;
uid_t sender_euid;
__kernel_pid_t sender_pid;
__kernel_uid_t sender_euid;
Are we guaranteed that this does not affect the UAPI at all? Userspace code using this definition will have to run with kernels using the old definition and visa-versa.
A standards compliant userspace should be expecting a signed integer type here. So the only way I can think userspace would be affected is if:
- pid_t is a long AND
- sizeof(long) > sizeof(int) AND
- Consumers of the pid_t definition actually attempt to mutate the
result to make use of extra bits in the variable (which are not there)
Or the userspace headers have a 16bit pid_t.
I can't help feeling that uapi headers should only use explicit fixed sized types. There is no point indirecting the type names - the sizes still can't be changes.
David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)