All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] libselinux: use /proc/thread-self when available
@ 2015-07-13 13:23 Stephen Smalley
  2015-07-13 13:34 ` Eric Paris
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Smalley @ 2015-07-13 13:23 UTC (permalink / raw)
  To: selinux; +Cc: Stephen Smalley, eparis

Linux 3.17 introduced a /proc/thread-self symlink that can be used
to reference the proc files of the current thread without needing to
use gettid(2).  Use this symlink when it exists, falling back to
using gettid(2) when it does not.  This is generally beneficial, but
was specifically motivated by https://github.com/systemd/systemd/issues/475.

Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
---
Only change is the patch description: /proc/thread-self was introduced in
Linux 3.17, not Linux 3.16.

 libselinux/src/procattr.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/libselinux/src/procattr.c b/libselinux/src/procattr.c
index f990350..e444571 100644
--- a/libselinux/src/procattr.c
+++ b/libselinux/src/procattr.c
@@ -95,6 +95,12 @@ static int openattr(pid_t pid, const char *attr, int flags)
 	if (pid > 0)
 		rc = asprintf(&path, "/proc/%d/attr/%s", pid, attr);
 	else {
+		rc = asprintf(&path, "/proc/thread-self/attr/%s", attr);
+		if (rc < 0)
+			return -1;
+		fd = open(path, flags | O_CLOEXEC);
+		if (fd >= 0 || errno != ENOENT)
+			goto out;
 		if (!tid)
 			tid = gettid();
 		rc = asprintf(&path, "/proc/self/task/%d/attr/%s", tid, attr);
@@ -103,6 +109,7 @@ static int openattr(pid_t pid, const char *attr, int flags)
 		return -1;
 
 	fd = open(path, flags | O_CLOEXEC);
+out:
 	free(path);
 	return fd;
 }
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-07-13 19:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-13 13:23 [PATCH v2] libselinux: use /proc/thread-self when available Stephen Smalley
2015-07-13 13:34 ` Eric Paris
2015-07-13 13:56   ` Stephen Smalley
2015-07-13 19:20     ` Eric Paris
2015-07-13 19:42       ` Stephen Smalley

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.