ret = kdbus_meta_append_timestamp(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_TIMESTAMP;
}
if (which & KDBUS_ATTACH_CREDS &&
ret = kdbus_meta_append_cred(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_CREDS;
}
if (which & KDBUS_ATTACH_NAMES && conn &&
ret = kdbus_meta_append_src_names(meta, conn);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_NAMES;
}
if (which & KDBUS_ATTACH_COMM &&
ret = kdbus_meta_append_str(meta, KDBUS_ITEM_PID_COMM, comm);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_COMM;
}
if (which & KDBUS_ATTACH_EXE &&
ret = kdbus_meta_append_exe(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_EXE;
}
if (which & KDBUS_ATTACH_CMDLINE &&
ret = kdbus_meta_append_cmdline(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_CMDLINE;
}
/* we always return a 4 elements, the element size is 1/4 */
ret = kdbus_meta_append_caps(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_CAPS;
}
#ifdef CONFIG_CGROUPS
ret = kdbus_meta_append_cgroup(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_CGROUP;
}
#endif
ret = kdbus_meta_append_audit(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_AUDIT;
}
#endif
ret = kdbus_meta_append_seclabel(meta);
if (ret < 0)
goto exit;
-
- meta->attached |= KDBUS_ATTACH_SECLABEL;
}
#endif
+ /*
+ * We tried to add everything we got asked for; do not get
+ * here again for the same question.
+ */
+ meta->attached |= which;
exit:
return ret;