]> git.itanic.dy.fi Git - linux-stable/commitdiff
tomoyo: use hwight16() in tomoyo_domain_quota_is_ok()
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Wed, 15 Dec 2021 11:13:55 +0000 (20:13 +0900)
committerTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Wed, 15 Dec 2021 11:13:55 +0000 (20:13 +0900)
hwight16() is much faster. While we are at it, no need to include
"perm =" part into data_race() macro, for perm is a local variable
that cannot be accessed by other threads.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
security/tomoyo/util.c

index af8cd2af3466d4929ed4eddc0e696be5933b6fa5..6799b1122c9d88c4ae8e617490eff5c6b81deb83 100644 (file)
@@ -1056,7 +1056,6 @@ bool tomoyo_domain_quota_is_ok(struct tomoyo_request_info *r)
        list_for_each_entry_rcu(ptr, &domain->acl_info_list, list,
                                srcu_read_lock_held(&tomoyo_ss)) {
                u16 perm;
-               u8 i;
 
                if (ptr->is_deleted)
                        continue;
@@ -1067,23 +1066,23 @@ bool tomoyo_domain_quota_is_ok(struct tomoyo_request_info *r)
                 */
                switch (ptr->type) {
                case TOMOYO_TYPE_PATH_ACL:
-                       data_race(perm = container_of(ptr, struct tomoyo_path_acl, head)->perm);
+                       perm = data_race(container_of(ptr, struct tomoyo_path_acl, head)->perm);
                        break;
                case TOMOYO_TYPE_PATH2_ACL:
-                       data_race(perm = container_of(ptr, struct tomoyo_path2_acl, head)->perm);
+                       perm = data_race(container_of(ptr, struct tomoyo_path2_acl, head)->perm);
                        break;
                case TOMOYO_TYPE_PATH_NUMBER_ACL:
-                       data_race(perm = container_of(ptr, struct tomoyo_path_number_acl, head)
+                       perm = data_race(container_of(ptr, struct tomoyo_path_number_acl, head)
                                  ->perm);
                        break;
                case TOMOYO_TYPE_MKDEV_ACL:
-                       data_race(perm = container_of(ptr, struct tomoyo_mkdev_acl, head)->perm);
+                       perm = data_race(container_of(ptr, struct tomoyo_mkdev_acl, head)->perm);
                        break;
                case TOMOYO_TYPE_INET_ACL:
-                       data_race(perm = container_of(ptr, struct tomoyo_inet_acl, head)->perm);
+                       perm = data_race(container_of(ptr, struct tomoyo_inet_acl, head)->perm);
                        break;
                case TOMOYO_TYPE_UNIX_ACL:
-                       data_race(perm = container_of(ptr, struct tomoyo_unix_acl, head)->perm);
+                       perm = data_race(container_of(ptr, struct tomoyo_unix_acl, head)->perm);
                        break;
                case TOMOYO_TYPE_MANUAL_TASK_ACL:
                        perm = 0;
@@ -1091,9 +1090,7 @@ bool tomoyo_domain_quota_is_ok(struct tomoyo_request_info *r)
                default:
                        perm = 1;
                }
-               for (i = 0; i < 16; i++)
-                       if (perm & (1 << i))
-                               count++;
+               count += hweight16(perm);
        }
        if (count < tomoyo_profile(domain->ns, domain->profile)->
            pref[TOMOYO_PREF_MAX_LEARNING_ENTRY])