X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=security%2Fdevice_cgroup.c;h=3aacd0fe7179b26a4e08bc7bce343dd7fbadc239;hb=f41bf2ab998daaa2ac27348d5813e0ae21c57ded;hp=5ba78701adc3ab868079ee180b1fc2e4ffc3b95f;hpb=e21e696edb498c7f7eed42ba3096f6bbe13927b6;p=~andy%2Flinux diff --git a/security/device_cgroup.c b/security/device_cgroup.c index 5ba78701adc..3aacd0fe717 100644 --- a/security/device_cgroup.c +++ b/security/device_cgroup.c @@ -513,11 +513,14 @@ 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); - list_for_each_entry(wh, &dev_cgroup->whitelist, list) { + list_for_each_entry_rcu(wh, &dev_cgroup->whitelist, list) { if (wh->type & DEV_ALL) goto acc_check; if ((wh->type & DEV_BLOCK) && !S_ISBLK(mode))