aboutsummaryrefslogtreecommitdiffstats
path: root/security/device_cgroup.c
diff options
context:
space:
mode:
Diffstat (limited to 'security/device_cgroup.c')
-rw-r--r--security/device_cgroup.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index 5fda7df19723..b8186bac8b7e 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -490,7 +490,7 @@ int devcgroup_inode_permission(struct inode *inode, int mask)
490 490
491 list_for_each_entry_rcu(wh, &dev_cgroup->whitelist, list) { 491 list_for_each_entry_rcu(wh, &dev_cgroup->whitelist, list) {
492 if (wh->type & DEV_ALL) 492 if (wh->type & DEV_ALL)
493 goto acc_check; 493 goto found;
494 if ((wh->type & DEV_BLOCK) && !S_ISBLK(inode->i_mode)) 494 if ((wh->type & DEV_BLOCK) && !S_ISBLK(inode->i_mode))
495 continue; 495 continue;
496 if ((wh->type & DEV_CHAR) && !S_ISCHR(inode->i_mode)) 496 if ((wh->type & DEV_CHAR) && !S_ISCHR(inode->i_mode))
@@ -499,11 +499,12 @@ int devcgroup_inode_permission(struct inode *inode, int mask)
499 continue; 499 continue;
500 if (wh->minor != ~0 && wh->minor != iminor(inode)) 500 if (wh->minor != ~0 && wh->minor != iminor(inode))
501 continue; 501 continue;
502acc_check: 502
503 if ((mask & MAY_WRITE) && !(wh->access & ACC_WRITE)) 503 if ((mask & MAY_WRITE) && !(wh->access & ACC_WRITE))
504 continue; 504 continue;
505 if ((mask & MAY_READ) && !(wh->access & ACC_READ)) 505 if ((mask & MAY_READ) && !(wh->access & ACC_READ))
506 continue; 506 continue;
507found:
507 rcu_read_unlock(); 508 rcu_read_unlock();
508 return 0; 509 return 0;
509 } 510 }
@@ -527,7 +528,7 @@ int devcgroup_inode_mknod(int mode, dev_t dev)
527 528
528 list_for_each_entry_rcu(wh, &dev_cgroup->whitelist, list) { 529 list_for_each_entry_rcu(wh, &dev_cgroup->whitelist, list) {
529 if (wh->type & DEV_ALL) 530 if (wh->type & DEV_ALL)
530 goto acc_check; 531 goto found;
531 if ((wh->type & DEV_BLOCK) && !S_ISBLK(mode)) 532 if ((wh->type & DEV_BLOCK) && !S_ISBLK(mode))
532 continue; 533 continue;
533 if ((wh->type & DEV_CHAR) && !S_ISCHR(mode)) 534 if ((wh->type & DEV_CHAR) && !S_ISCHR(mode))
@@ -536,9 +537,10 @@ int devcgroup_inode_mknod(int mode, dev_t dev)
536 continue; 537 continue;
537 if (wh->minor != ~0 && wh->minor != MINOR(dev)) 538 if (wh->minor != ~0 && wh->minor != MINOR(dev))
538 continue; 539 continue;
539acc_check: 540
540 if (!(wh->access & ACC_MKNOD)) 541 if (!(wh->access & ACC_MKNOD))
541 continue; 542 continue;
543found:
542 rcu_read_unlock(); 544 rcu_read_unlock();
543 return 0; 545 return 0;
544 } 546 }