OK, I guess we should do something similar in the netprio, netcls
cgroups and
yes document it as you noted in your last comment.
Here is my attempt to add such a check. I really don't know if this is the
correct way to do so. To test this I have written a test program, which
seems to test the right thing. Please have a look and let me know if
it is correct: http://www.monom.org/misc/scm_rights.c
And here a dirty first version of the patch:
From 49a78d907eaf31c16673025e7e3b4844e419e416 Mon Sep 17 00:00:00 2001
From: Daniel Wagner <daniel.wagner@xxxxxxxxxxxx>
Date: Tue, 22 Jan 2013 11:08:22 +0100
Subject: [PATCH] net: net_prio: Block attach if a socket is shared
---
net/core/netprio_cgroup.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/net/core/netprio_cgroup.c b/net/core/netprio_cgroup.c
index 847c02b..de4e6c5 100644
--- a/net/core/netprio_cgroup.c
+++ b/net/core/netprio_cgroup.c
@@ -274,9 +274,39 @@ static struct cftype ss_files[] = {
{ } /* terminate */
};
+static int check_cnt(const void *v, struct file *file, unsigned n)
+{
+ unsigned *flag = (unsigned *)v;
+ int err;
+
+ struct socket *sock = sock_from_file(file, &err);
+ if (sock && file_count(file) > 1)
+ *flag = 1;
+