2005-11-28 23:41:52

by Matt Helsley

[permalink] [raw]
Subject: [BUG][PATCH] process events connector - uid_t gid_t size issues

Andrew,

I noticed this follow up patch did not make it's way into -mm and
subsequently to 2.6.15-rc2. The uid_t and gid_t fields appear to present
a 32/64-bit userspace/kernel problem for some archs.

This patch addresses the problem by fixing the size to the largest
size for uid_t/gid_t used in the kernel. This preserves the total size of
the event structure while ensuring that the layouts of the ID change event
match in 32 and 64-bit kernels and applications.

Please apply.

Signed-off-by: Matt Helsley <[email protected]>

---

Index: linux-2.6.15-rc2/include/linux/cn_proc.h
===================================================================
--- linux-2.6.15-rc2.orig/include/linux/cn_proc.h
+++ linux-2.6.15-rc2/include/linux/cn_proc.h
@@ -84,16 +84,16 @@ struct proc_event {

struct id_proc_event {
pid_t process_pid;
pid_t process_tgid;
union {
- uid_t ruid; /* current->uid */
- gid_t rgid; /* current->gid */
+ __u32 ruid; /* task uid */
+ __u32 rgid; /* task gid */
} r;
union {
- uid_t euid;
- gid_t egid;
+ __u32 euid;
+ __u32 egid;
} e;
} id;

struct exit_proc_event {
pid_t process_pid;