metadata: split KDBUS_ATTACH_COMM in _PID and _TID (ABI break)
authorDaniel Mack <daniel@zonque.org>
Mon, 20 Oct 2014 12:39:27 +0000 (14:39 +0200)
committerDaniel Mack <daniel@zonque.org>
Mon, 20 Oct 2014 13:30:06 +0000 (15:30 +0200)
Allow users to specify KDBUS_ATTACH_COMM_PID and KDBUS_ATTACH_COMM_TID
separately. This also makes the attachment maintainance in metdata.c
cleaner.

Users that use _KDBUS_ATTACH_ALL just need to recompile.

Signed-off-by: Daniel Mack <daniel@zonque.org>
handle.c
kdbus.h
metadata.c

index bca0261d2d7633036a49dfd1d935c2ccc751edce..25e1cee3936421c3ac15f70112451b38a822c212 100644 (file)
--- a/handle.c
+++ b/handle.c
@@ -135,13 +135,14 @@ static int kdbus_handle_open(struct inode *inode, struct file *file)
                goto exit_ep_unref;
 
        ret = kdbus_meta_append(handle->meta, NULL, 0,
-                               KDBUS_ATTACH_CREDS |
-                               KDBUS_ATTACH_COMM |
-                               KDBUS_ATTACH_EXE |
-                               KDBUS_ATTACH_CMDLINE |
-                               KDBUS_ATTACH_CGROUP |
-                               KDBUS_ATTACH_CAPS |
-                               KDBUS_ATTACH_SECLABEL |
+                               KDBUS_ATTACH_CREDS      |
+                               KDBUS_ATTACH_TID_COMM   |
+                               KDBUS_ATTACH_PID_COMM   |
+                               KDBUS_ATTACH_EXE        |
+                               KDBUS_ATTACH_CMDLINE    |
+                               KDBUS_ATTACH_CGROUP     |
+                               KDBUS_ATTACH_CAPS       |
+                               KDBUS_ATTACH_SECLABEL   |
                                KDBUS_ATTACH_AUDIT);
        if (ret < 0)
                goto exit_meta_free;
diff --git a/kdbus.h b/kdbus.h
index 453a8d18bc4e6286b07db0b622e7611fccfa64e1..e1fa21dee0d9b1fa11e33cff1d7d5ea1f760b8a9 100644 (file)
--- a/kdbus.h
+++ b/kdbus.h
@@ -526,7 +526,8 @@ enum kdbus_hello_flags {
  * @KDBUS_ATTACH_CREDS:                Credentials
  * @KDBUS_ATTACH_AUXGROUPS:    Auxiliary groups
  * @KDBUS_ATTACH_NAMES:                Well-known names
- * @KDBUS_ATTACH_COMM:         The "comm" process identifier
+ * @KDBUS_ATTACH_COMM_TID:     The "comm" process identifier of the TID
+ * @KDBUS_ATTACH_COMM_PID:     The "comm" process identifier of the PID
  * @KDBUS_ATTACH_EXE:          The path of the executable
  * @KDBUS_ATTACH_CMDLINE:      The process command line
  * @KDBUS_ATTACH_CGROUP:       The croup membership
@@ -541,15 +542,16 @@ enum kdbus_attach_flags {
        KDBUS_ATTACH_CREDS              =  1ULL <<  1,
        KDBUS_ATTACH_AUXGROUPS          =  1ULL <<  2,
        KDBUS_ATTACH_NAMES              =  1ULL <<  3,
-       KDBUS_ATTACH_COMM               =  1ULL <<  4,
-       KDBUS_ATTACH_EXE                =  1ULL <<  5,
-       KDBUS_ATTACH_CMDLINE            =  1ULL <<  6,
-       KDBUS_ATTACH_CGROUP             =  1ULL <<  7,
-       KDBUS_ATTACH_CAPS               =  1ULL <<  8,
-       KDBUS_ATTACH_SECLABEL           =  1ULL <<  9,
-       KDBUS_ATTACH_AUDIT              =  1ULL << 10,
-       KDBUS_ATTACH_CONN_NAME          =  1ULL << 11,
-       _KDBUS_ATTACH_ALL               =  (1ULL << 12) - 1,
+       KDBUS_ATTACH_TID_COMM           =  1ULL <<  4,
+       KDBUS_ATTACH_PID_COMM           =  1ULL <<  5,
+       KDBUS_ATTACH_EXE                =  1ULL <<  6,
+       KDBUS_ATTACH_CMDLINE            =  1ULL <<  7,
+       KDBUS_ATTACH_CGROUP             =  1ULL <<  8,
+       KDBUS_ATTACH_CAPS               =  1ULL <<  9,
+       KDBUS_ATTACH_SECLABEL           =  1ULL << 10,
+       KDBUS_ATTACH_AUDIT              =  1ULL << 11,
+       KDBUS_ATTACH_CONN_NAME          =  1ULL << 12,
+       _KDBUS_ATTACH_ALL               =  (1ULL << 13) - 1,
 };
 
 /**
index 6ca308e5ed1669b4ddb22e0c39d06910ac087b37..6861899119f8369c8ba4a8bbfe044016a9476711 100644 (file)
@@ -530,7 +530,7 @@ int kdbus_meta_append(struct kdbus_meta *meta,
                meta->attached |= KDBUS_ATTACH_NAMES;
        }
 
-       if (mask & KDBUS_ATTACH_COMM) {
+       if (mask & KDBUS_ATTACH_TID_COMM) {
                char comm[TASK_COMM_LEN];
 
                get_task_comm(comm, current->group_leader);
@@ -538,12 +538,18 @@ int kdbus_meta_append(struct kdbus_meta *meta,
                if (ret < 0)
                        return ret;
 
+               meta->attached |= KDBUS_ATTACH_TID_COMM;
+       }
+
+       if (mask & KDBUS_ATTACH_PID_COMM) {
+               char comm[TASK_COMM_LEN];
+
                get_task_comm(comm, current);
                ret = kdbus_meta_append_str(meta, KDBUS_ITEM_PID_COMM, comm);
                if (ret < 0)
                        return ret;
 
-               meta->attached |= KDBUS_ATTACH_COMM;
+               meta->attached |= KDBUS_ATTACH_PID_COMM;
        }
 
        if (mask & KDBUS_ATTACH_EXE) {