All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] devices cgroup: allow mkfifo
@ 2008-12-09 21:08 Serge E. Hallyn
       [not found] ` <20081209210802.GA24549-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Serge E. Hallyn @ 2008-12-09 21:08 UTC (permalink / raw)
  To: Daniel Lezcano; +Cc: Linux Containers

The devcgroup_inode_permission() hook in the devices whitelist
cgroup has always bypassed access checks on fifos.  But the
mknod hook did not.  The devices whitelist is only about block
and char devices, and fifos can't even be added to the whitelist,
so fifos can't be created at all except by tasks which have 'a'
in their whitelist (meaning they have access to all devices).

Fix the behavior by bypassing access checks to mkfifo.

Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
 security/device_cgroup.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index 5ba7870..df9d491 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -513,6 +513,9 @@ int devcgroup_inode_mknod(int mode, dev_t dev)
 	struct dev_cgroup *dev_cgroup;
 	struct dev_whitelist_item *wh;
 
+	if (!S_ISBLK(mode) && !S_ISCHR(mode))
+		return 0;
+
 	rcu_read_lock();
 
 	dev_cgroup = task_devcgroup(current);
-- 
1.5.4.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread
* [PATCH 1/1] devices cgroup: allow mkfifo
@ 2008-12-10 15:57 Serge E. Hallyn
  2008-12-11  0:56 ` Li Zefan
  0 siblings, 1 reply; 9+ messages in thread
From: Serge E. Hallyn @ 2008-12-10 15:57 UTC (permalink / raw)
  To: lkml; +Cc: Pavel Emelyanov, Li Zefan, Daniel Lezcano

The devcgroup_inode_permission() hook in the devices whitelist
cgroup has always bypassed access checks on fifos.  But the
mknod hook did not.  The devices whitelist is only about block
and char devices, and fifos can't even be added to the whitelist,
so fifos can't be created at all except by tasks which have 'a'
in their whitelist (meaning they have access to all devices).

Fix the behavior by bypassing access checks to mkfifo.

Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>
---
 security/device_cgroup.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index 5ba7870..df9d491 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -513,6 +513,9 @@ int devcgroup_inode_mknod(int mode, dev_t dev)
 	struct dev_cgroup *dev_cgroup;
 	struct dev_whitelist_item *wh;
 
+	if (!S_ISBLK(mode) && !S_ISCHR(mode))
+		return 0;
+
 	rcu_read_lock();
 
 	dev_cgroup = task_devcgroup(current);
-- 
1.5.4.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread
* [PATCH 1/1] devices cgroup: allow mkfifo
@ 2008-12-11 15:50 Serge E. Hallyn
  2008-12-12  3:12 ` Andrew Morton
  0 siblings, 1 reply; 9+ messages in thread
From: Serge E. Hallyn @ 2008-12-11 15:50 UTC (permalink / raw)
  To: torvalds, lkml, Andrew Morton, stable, Pavel Emelyanov,
	Daniel Lezcano

The devcgroup_inode_permission() hook in the devices whitelist
cgroup has always bypassed access checks on fifos.  But the
mknod hook did not.  The devices whitelist is only about block
and char devices, and fifos can't even be added to the whitelist,
so fifos can't be created at all except by tasks which have 'a'
in their whitelist (meaning they have access to all devices).

Fix the behavior by bypassing access checks to mkfifo (and mksock).

(Thanks, Daniel, for finding this)

Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>
Reviewed-by: Li Zefan <lizf@cn.fujitsu.com>
---
 security/device_cgroup.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index 5ba7870..df9d491 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -513,6 +513,9 @@ int devcgroup_inode_mknod(int mode, dev_t dev)
 	struct dev_cgroup *dev_cgroup;
 	struct dev_whitelist_item *wh;
 
+	if (!S_ISBLK(mode) && !S_ISCHR(mode))
+		return 0;
+
 	rcu_read_lock();
 
 	dev_cgroup = task_devcgroup(current);
-- 
1.5.4.3


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

end of thread, other threads:[~2008-12-13  7:10 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-09 21:08 [PATCH 1/1] devices cgroup: allow mkfifo Serge E. Hallyn
     [not found] ` <20081209210802.GA24549-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-12-10 10:39   ` Daniel Lezcano
  -- strict thread matches above, loose matches on Subject: below --
2008-12-10 15:57 Serge E. Hallyn
2008-12-11  0:56 ` Li Zefan
2008-12-11 14:59   ` Serge E. Hallyn
2008-12-11 15:50 Serge E. Hallyn
2008-12-12  3:12 ` Andrew Morton
2008-12-12 14:34   ` Serge E. Hallyn
2008-12-13  7:09     ` Li Zefan

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.