public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [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; 7+ 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] 7+ 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; 7+ 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] 7+ messages in thread

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

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-10 15:57 [PATCH 1/1] devices cgroup: allow mkfifo Serge E. Hallyn
2008-12-11  0:56 ` Li Zefan
2008-12-11 14:59   ` Serge E. Hallyn
  -- strict thread matches above, loose matches on Subject: below --
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox