tomoyo: use hwight16() in tomoyo_domain_quota_is_ok()
[ Upstream commit f702e1107601230eec707739038a89018ea3468d ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
e2048a1f91
commit
0643d9175d
@@ -1051,7 +1051,6 @@ bool tomoyo_domain_quota_is_ok(struct tomoyo_request_info *r)
|
|||||||
list_for_each_entry_rcu(ptr, &domain->acl_info_list, list,
|
list_for_each_entry_rcu(ptr, &domain->acl_info_list, list,
|
||||||
srcu_read_lock_held(&tomoyo_ss)) {
|
srcu_read_lock_held(&tomoyo_ss)) {
|
||||||
u16 perm;
|
u16 perm;
|
||||||
u8 i;
|
|
||||||
|
|
||||||
if (ptr->is_deleted)
|
if (ptr->is_deleted)
|
||||||
continue;
|
continue;
|
||||||
@@ -1062,23 +1061,23 @@ bool tomoyo_domain_quota_is_ok(struct tomoyo_request_info *r)
|
|||||||
*/
|
*/
|
||||||
switch (ptr->type) {
|
switch (ptr->type) {
|
||||||
case TOMOYO_TYPE_PATH_ACL:
|
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;
|
break;
|
||||||
case TOMOYO_TYPE_PATH2_ACL:
|
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;
|
break;
|
||||||
case TOMOYO_TYPE_PATH_NUMBER_ACL:
|
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);
|
->perm);
|
||||||
break;
|
break;
|
||||||
case TOMOYO_TYPE_MKDEV_ACL:
|
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;
|
break;
|
||||||
case TOMOYO_TYPE_INET_ACL:
|
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;
|
break;
|
||||||
case TOMOYO_TYPE_UNIX_ACL:
|
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;
|
break;
|
||||||
case TOMOYO_TYPE_MANUAL_TASK_ACL:
|
case TOMOYO_TYPE_MANUAL_TASK_ACL:
|
||||||
perm = 0;
|
perm = 0;
|
||||||
@@ -1086,9 +1085,7 @@ bool tomoyo_domain_quota_is_ok(struct tomoyo_request_info *r)
|
|||||||
default:
|
default:
|
||||||
perm = 1;
|
perm = 1;
|
||||||
}
|
}
|
||||||
for (i = 0; i < 16; i++)
|
count += hweight16(perm);
|
||||||
if (perm & (1 << i))
|
|
||||||
count++;
|
|
||||||
}
|
}
|
||||||
if (count < tomoyo_profile(domain->ns, domain->profile)->
|
if (count < tomoyo_profile(domain->ns, domain->profile)->
|
||||||
pref[TOMOYO_PREF_MAX_LEARNING_ENTRY])
|
pref[TOMOYO_PREF_MAX_LEARNING_ENTRY])
|
||||||
|
Reference in New Issue
Block a user