Re: [PATCH] security: selinux: use kmem_cache for ebitmap

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Paul Moore wrote on 2017-06-07 오후 10:50:
> 
> 
> 
>>> On Mon, Jun 5, 2017 at 5:10 AM, Junil Lee <junil0814.lee@xxxxxxx> wrote:
>>>> The allocated size for each ebitmap_node is 192byte by kzalloc().
>>>> Then, ebitmap_node size is fixed, so it's possible to use only 144byte
>>>> for each object by kmem_cache_zalloc().
>>>> It can reduce some dynamic allocation size.
>>>>
>>>> Signed-off-by: Junil Lee <junil0814.lee@xxxxxxx>
>>>> ---
>>>> security/selinux/ss/ebitmap.c | 24 +++++++++++++++++++-----
>>>> security/selinux/ss/ebitmap.h | 3 +++
>>>> security/selinux/ss/services.c | 4 ++++
>>>> 3 files changed, 26 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/security/selinux/ss/ebitmap.c
>>> b/security/selinux/ss/ebitmap.c
>>>> index 9db4709a..076c96f 100644
>>>> --- a/security/selinux/ss/ebitmap.c
>>>> +++ b/security/selinux/ss/ebitmap.c
>>>> @@ -24,6 +24,8 @@
>>>>
>>>> #define BITS_PER_U64 (sizeof(u64) * 8)
>>>>
>>>> +static struct kmem_cache *ebitmap_node_cachep;
>>>> +
>>>> int ebitmap_cmp(struct ebitmap *e1, struct ebitmap *e2)
>>>> {
>>>> struct ebitmap_node *n1, *n2;
>>>> @@ -54,7 +56,7 @@ int ebitmap_cpy(struct ebitmap *dst, struct ebitmap
>>> *src)
>>>> n = src->node;
>>>> prev = NULL;
>>>> while (n) {
>>>> - new = kzalloc(sizeof(*new), GFP_ATOMIC);
>>>> + new = kmem_cache_zalloc(ebitmap_node_cachep, GFP_ATOMIC);
>>>> if (!new) {
>>>> ebitmap_destroy(dst);
>>>> return -ENOMEM;
>>>> @@ -162,7 +164,7 @@ int ebitmap_netlbl_import(struct ebitmap *ebmap,
>>>> if (e_iter == NULL ||
>>>> offset >= e_iter->startbit + EBITMAP_SIZE) {
>>>> e_prev = e_iter;
>>>> - e_iter = kzalloc(sizeof(*e_iter), GFP_ATOMIC);
>>>> + e_iter = kmem_cache_zalloc(ebitmap_node_cachep, GFP_ATOMIC);
>>>> if (e_iter == NULL)
>>>> goto netlbl_import_failure;
>>>> e_iter->startbit = offset - (offset % EBITMAP_SIZE);
>>>> @@ -299,7 +301,7 @@ int ebitmap_set_bit(struct ebitmap *e, unsigned
>>> long bit, int value)
>>>> if (!value)
>>>> return 0;
>>>>
>>>> - new = kzalloc(sizeof(*new), GFP_ATOMIC);
>>>> + new = kmem_cache_zalloc(ebitmap_node_cachep, GFP_ATOMIC);
>>>> if (!new)
>>>> return -ENOMEM;
>>>
>>> I believe there is a kfree() in ebitmap_set_bit() that also needs to
>>> be converted.
>>>
>>
>> Thanks for your advice Paul.
>> reattach patch v2.
> 
> Please submit patches inline, just as you did for your original
> posting. It make it easier to review and apply.
> 
> Thanks.
> 

I'm sorry for inconvenience.
I'll resubmit the patch as I did for my original posting.

Thanks.

> -- 
> paul moore
> www.paul-moore.com



[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux