From: Amos Kong <akong-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: "Serge E. Hallyn" <serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
Cc: Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>,
Serge Hallyn
<serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
mtosatti-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] cgroup: fix device deny of DEV_ALL
Date: Tue, 22 May 2012 10:14:24 +0800 [thread overview]
Message-ID: <4FBAF680.90007@redhat.com> (raw)
In-Reply-To: <20120522015426.GA10344-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
On 22/05/12 09:54, Serge E. Hallyn wrote:
> Quoting Li Zefan (lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org):
>> Serge Hallyn wrote:
>>
>>> Quoting Amos Kong (akong-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org):
>>>> @ mount -t cgroup -o devices none /cgroup
>>>> @ mkdir /cgroups/devices
>>>> @ ls -l /dev/dm-3
>>>> brw-rw----. 1 root disk 253, 3 Oct 14 19:03 /dev/dm-3
>>>> @ echo 'b 253:3 rw'> devices.deny
>>>> but I can still write it by 'dd if=/dev/zero of=/dev/dm-3'
>>>>
>>>> In devcgroup_create(), we create a new whitelist, and add first
>>>> entry which type is 'DEV_ALL'. Execute "# echo 'b 253:3 rw'>
>>>> devices.deny", dev_whitelist_rm() will update access of first
>>>> entry to 1(m), but type of first entry is still 'DEV_ALL'.
>>>
>>> Hi,
>>>
>>> thanks. You raise a good point, but I think it needs some discussion.
>>>
>>> What happens right now is that if you have the 'a *:* rwm' entry and do
>>> echo 'b 253:3 rw'> devices.deny, then when you next cat devices.list you
>>> will still see the 'a *:* rwm' entry. So there should be no confusion
>>> over why the dd succeeds.
>>> You didn't remove the entry, because there
>>> was no match echoed into devices.deny.
Hi serge,
My patch updated type,major,minor, it _equals to_ remove 'a *:* rwm' and
add 'b *:* m'
It's a clear logic, why need to manually remove 'a *:* rwm'?
>> No, you'll see the entry has been changed to 'a *:* m', so I think we
>> should at least fix this.
>
> Yikes. Agreed. That's a bug.
which bug? should not update walk->access if wh->access is not 'rwm'?
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index c43a332..e619a34 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -145,7 +145,8 @@ static void dev_whitelist_rm(struct dev_cgroup
*dev_cgroup,
continue;
remove:
- walk->access &= ~wh->access;
+ if (walk->type != DEV_ALL || wh->access == ACC_MASK)
+ walk->access &= ~wh->access;
if (!walk->access) {
list_del_rcu(&walk->list);
kfree_rcu(walk, rcu);
--
Amos.
WARNING: multiple messages have this Message-ID (diff)
From: Amos Kong <akong@redhat.com>
To: "Serge E. Hallyn" <serge@hallyn.com>
Cc: Li Zefan <lizefan@huawei.com>,
Serge Hallyn <serge.hallyn@canonical.com>,
containers@lists.linux-foundation.org, mtosatti@redhat.com,
linux-kernel@vger.kernel.org, tj@kernel.org,
cgroups@vger.kernel.org
Subject: Re: [PATCH] cgroup: fix device deny of DEV_ALL
Date: Tue, 22 May 2012 10:14:24 +0800 [thread overview]
Message-ID: <4FBAF680.90007@redhat.com> (raw)
In-Reply-To: <20120522015426.GA10344@mail.hallyn.com>
On 22/05/12 09:54, Serge E. Hallyn wrote:
> Quoting Li Zefan (lizefan@huawei.com):
>> Serge Hallyn wrote:
>>
>>> Quoting Amos Kong (akong@redhat.com):
>>>> @ mount -t cgroup -o devices none /cgroup
>>>> @ mkdir /cgroups/devices
>>>> @ ls -l /dev/dm-3
>>>> brw-rw----. 1 root disk 253, 3 Oct 14 19:03 /dev/dm-3
>>>> @ echo 'b 253:3 rw'> devices.deny
>>>> but I can still write it by 'dd if=/dev/zero of=/dev/dm-3'
>>>>
>>>> In devcgroup_create(), we create a new whitelist, and add first
>>>> entry which type is 'DEV_ALL'. Execute "# echo 'b 253:3 rw'>
>>>> devices.deny", dev_whitelist_rm() will update access of first
>>>> entry to 1(m), but type of first entry is still 'DEV_ALL'.
>>>
>>> Hi,
>>>
>>> thanks. You raise a good point, but I think it needs some discussion.
>>>
>>> What happens right now is that if you have the 'a *:* rwm' entry and do
>>> echo 'b 253:3 rw'> devices.deny, then when you next cat devices.list you
>>> will still see the 'a *:* rwm' entry. So there should be no confusion
>>> over why the dd succeeds.
>>> You didn't remove the entry, because there
>>> was no match echoed into devices.deny.
Hi serge,
My patch updated type,major,minor, it _equals to_ remove 'a *:* rwm' and
add 'b *:* m'
It's a clear logic, why need to manually remove 'a *:* rwm'?
>> No, you'll see the entry has been changed to 'a *:* m', so I think we
>> should at least fix this.
>
> Yikes. Agreed. That's a bug.
which bug? should not update walk->access if wh->access is not 'rwm'?
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index c43a332..e619a34 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -145,7 +145,8 @@ static void dev_whitelist_rm(struct dev_cgroup
*dev_cgroup,
continue;
remove:
- walk->access &= ~wh->access;
+ if (walk->type != DEV_ALL || wh->access == ACC_MASK)
+ walk->access &= ~wh->access;
if (!walk->access) {
list_del_rcu(&walk->list);
kfree_rcu(walk, rcu);
--
Amos.
next prev parent reply other threads:[~2012-05-22 2:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-15 0:39 cgroup: denying device doesn't work with 'rw' mode string Amos Kong
2012-05-18 3:37 ` Amos Kong
2012-05-18 3:52 ` Li Zefan
2012-05-18 4:31 ` Amos Kong
2012-05-18 7:46 ` Amos Kong
[not found] ` <CAFeW=pZ8Y7ycxjxro7zBMqdtaCOYs4RmoxtDrsN8+mqLhOL--g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-18 8:19 ` [PATCH] cgroup: fix device deny of DEV_ALL Amos Kong
2012-05-18 8:19 ` Amos Kong
2012-05-21 14:03 ` Serge Hallyn
2012-05-21 14:03 ` Serge Hallyn
2012-05-21 14:03 ` Serge Hallyn
2012-05-22 0:34 ` Li Zefan
2012-05-22 0:34 ` Li Zefan
[not found] ` <4FBADF1A.6040303-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2012-05-22 1:54 ` Serge E. Hallyn
2012-05-22 1:54 ` Serge E. Hallyn
[not found] ` <20120522015426.GA10344-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
2012-05-22 2:08 ` Serge E. Hallyn
2012-05-22 2:08 ` Serge E. Hallyn
[not found] ` <20120522020857.GA10499-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
2012-05-22 2:23 ` Amos Kong
2012-05-22 2:23 ` Amos Kong
2012-05-22 2:23 ` Amos Kong
2012-05-22 2:08 ` Serge E. Hallyn
2012-05-22 2:14 ` Amos Kong [this message]
2012-05-22 2:14 ` Amos Kong
[not found] ` <4FBAF680.90007-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-22 12:48 ` Serge Hallyn
2012-05-22 12:48 ` Serge Hallyn
2012-05-22 2:14 ` Amos Kong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FBAF680.90007@redhat.com \
--to=akong-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
--cc=mtosatti-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org \
--cc=serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.