linux-security-module.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
To: "Mickaël Salaün" <mic@digikod.net>
Cc: <willemdebruijn.kernel@gmail.com>,
	<linux-security-module@vger.kernel.org>, <netdev@vger.kernel.org>,
	<netfilter-devel@vger.kernel.org>, <yusongping@huawei.com>,
	<anton.sirazetdinov@huawei.com>
Subject: Re: [PATCH v5 04/15] landlock: helper functions refactoring
Date: Wed, 18 May 2022 12:14:35 +0300	[thread overview]
Message-ID: <08444718-341f-40db-b7b1-636942269c03@huawei.com> (raw)
In-Reply-To: <1aaaf30d-f727-63c4-e5ee-e88ff51af300@digikod.net>



5/16/2022 9:28 PM, Mickaël Salaün пишет:
> 
> On 16/05/2022 19:43, Konstantin Meskhidze wrote:
>>
>>
>> 5/16/2022 8:14 PM, Mickaël Salaün пишет:
>>>
>>> On 16/05/2022 17:20, Konstantin Meskhidze wrote:
>>>> Unmask_layers(), init_layer_masks() and
>>>> get_handled_accesses() helper functions move to
>>>> ruleset.c and rule_type argument is added.
>>>> This modification supports implementing new rule
>>>> types into next landlock versions.
>>>>
>>>> Signed-off-by: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
> 
> [...]
> 
>>>> -/*
>>>> - * @layer_masks is read and may be updated according to the access 
>>>> request and
>>>> - * the matching rule.
>>>> - *
>>>> - * Returns true if the request is allowed (i.e. relevant layer 
>>>> masks for the
>>>> - * request are empty).
>>>> - */
>>>> -static inline bool
>>>> -unmask_layers(const struct landlock_rule *const rule,
>>>> -          const access_mask_t access_request,
>>>> -          layer_mask_t (*const layer_masks)[LANDLOCK_NUM_ACCESS_FS])
>>>
>>> Moving these entire blocks of code make the review/diff impossible. 
>>> Why moving these helpers?
>>
>>    Cause these helpers are going to be used both for filesystem and 
>> network. I moved them into ruleset.c/h
> 
> Right. Please create a commit which only moves these helpers without 
> modifying them, and explain in the commit message that this removes 
> inlined code. We'll see later if this adds a visible performance impact.
> 
    Ok. I will create towo commits - the first one moves helpers to 
ruleset.c/h and the second one changes helpers to support network.
> [...]
> 
>>>> @@ -519,17 +413,25 @@ static int check_access_path_dual(
>>>>
>>>>       if (unlikely(dentry_child1)) {
>>>>           unmask_layers(find_rule(domain, dentry_child1),
>>>> -                  init_layer_masks(domain, LANDLOCK_MASK_ACCESS_FS,
>>>> -                           &_layer_masks_child1),
>>>> -                  &_layer_masks_child1);
>>>> +                init_layer_masks(domain,
>>>> +                    LANDLOCK_MASK_ACCESS_FS,
>>>> +                    &_layer_masks_child1,
>>>> +                    sizeof(_layer_masks_child1),
>>>> +                    LANDLOCK_RULE_PATH_BENEATH),
>>>> +                &_layer_masks_child1,
>>>> +                ARRAY_SIZE(_layer_masks_child1));
>>>
>>> There is a lot of formatting diff and that makes the review 
>>> difficult. Please format everything with clang-format-14.
>>
>>    Ok. Do you have some tool that helps you with editing code with 
>> clang format?
> 
> I just run `clang-format-14 -i` on files before each commit. Some 
> editors such as VSCode can handle the clang-format configuration (which 
> is in the Linux source tree).
> 
  Ok. I have updated installed cloang-format-14 executable and setup my 
VSCode to use .clang-format file.
> 
>>>
>>>>           layer_masks_child1 = &_layer_masks_child1;
>>>>           child1_is_directory = d_is_dir(dentry_child1);
>>>>       }
>>>>       if (unlikely(dentry_child2)) {
>>>>           unmask_layers(find_rule(domain, dentry_child2),
>>>> -                  init_layer_masks(domain, LANDLOCK_MASK_ACCESS_FS,
>>>> -                           &_layer_masks_child2),
>>>> -                  &_layer_masks_child2);
>>>> +                init_layer_masks(domain,
>>>> +                    LANDLOCK_MASK_ACCESS_FS,
>>>> +                    &_layer_masks_child2,
>>>> +                    sizeof(_layer_masks_child2),
>>>> +                    LANDLOCK_RULE_PATH_BENEATH),
>>>> +                &_layer_masks_child2,
>>>> +                ARRAY_SIZE(_layer_masks_child2));
>>>>           layer_masks_child2 = &_layer_masks_child2;
>>>>           child2_is_directory = d_is_dir(dentry_child2);
>>>>       }
>>>> @@ -582,14 +484,15 @@ static int check_access_path_dual(
>>>>
>>>>           rule = find_rule(domain, walker_path.dentry);
>>>>           allowed_parent1 = unmask_layers(rule, access_masked_parent1,
>>>> -                        layer_masks_parent1);
>>>> +                layer_masks_parent1,
>>>> +                ARRAY_SIZE(*layer_masks_parent1));
>>>>           allowed_parent2 = unmask_layers(rule, access_masked_parent2,
>>>> -                        layer_masks_parent2);
>>>> +                layer_masks_parent2,
>>>> +                ARRAY_SIZE(*layer_masks_parent2));
>>>>
>>>>           /* Stops when a rule from each layer grants access. */
>>>>           if (allowed_parent1 && allowed_parent2)
>>>>               break;
>>>> -
>>>
>>> There is no place for such formatting/whitespace patches.
>>>
>>    I missed that. scripts/checkpatch.pl did not show any problem here.
> 
> checkpatch.pl doesn't warn about whitespace changes.

   yep. I will use Vscode clang plugin to follow the required code style.
> 
> 
>>    I will fix it. Thanks.
>>>
>>>>   jump_up:
>>>>           if (walker_path.dentry == walker_path.mnt->mnt_root) {
>>>>               if (follow_up(&walker_path)) {
>>>> @@ -645,7 +548,9 @@ static inline int check_access_path(const struct 
>>>> landlock_ruleset *const domain,
>>>>   {
>>>>       layer_mask_t layer_masks[LANDLOCK_NUM_ACCESS_FS] = {};
>>>>
>>>> -    access_request = init_layer_masks(domain, access_request, 
>>>> &layer_masks);
>>>> +    access_request = init_layer_masks(domain, access_request,
>>>> +            &layer_masks, sizeof(layer_masks),
>>>> +            LANDLOCK_RULE_PATH_BENEATH);
>>>>       return check_access_path_dual(domain, path, access_request,
>>>>                         &layer_masks, NULL, 0, NULL, NULL);
>>>>   }
>>>> @@ -729,7 +634,8 @@ static bool collect_domain_accesses(
>>>>           return true;
>>>>
>>>>       access_dom = init_layer_masks(domain, LANDLOCK_MASK_ACCESS_FS,
>>>> -                      layer_masks_dom);
>>>> +            layer_masks_dom, sizeof(*layer_masks_dom),
>>>> +            LANDLOCK_RULE_PATH_BENEATH);
>>>>
>>>>       dget(dir);
>>>>       while (true) {
>>>> @@ -737,7 +643,8 @@ static bool collect_domain_accesses(
>>>>
>>>>           /* Gets all layers allowing all domain accesses. */
>>>>           if (unmask_layers(find_rule(domain, dir), access_dom,
>>>> -                  layer_masks_dom)) {
>>>> +                    layer_masks_dom,
>>>> +                    ARRAY_SIZE(*layer_masks_dom))) {
>>>>               /*
>>>>                * Stops when all handled accesses are allowed by at
>>>>                * least one rule in each layer.
>>>> @@ -851,9 +758,10 @@ static int current_check_refer_path(struct 
>>>> dentry *const old_dentry,
>>>>            * The LANDLOCK_ACCESS_FS_REFER access right is not required
>>>>            * for same-directory referer (i.e. no reparenting).
>>>>            */
>>>> -        access_request_parent1 = init_layer_masks(
>>>> -            dom, access_request_parent1 | access_request_parent2,
>>>> -            &layer_masks_parent1);
>>>> +        access_request_parent1 = init_layer_masks(dom,
>>>> +                access_request_parent1 | access_request_parent2,
>>>> +                &layer_masks_parent1, sizeof(layer_masks_parent1),
>>>> +                LANDLOCK_RULE_PATH_BENEATH);
>>>>           return check_access_path_dual(dom, new_dir,
>>>>                             access_request_parent1,
>>>>                             &layer_masks_parent1, NULL, 0,
>>>> @@ -861,7 +769,9 @@ static int current_check_refer_path(struct 
>>>> dentry *const old_dentry,
>>>>       }
>>>>
>>>>       /* Backward compatibility: no reparenting support. */
>>>> -    if (!(get_handled_accesses(dom) & LANDLOCK_ACCESS_FS_REFER))
>>>> +    if (!(get_handled_accesses(dom, LANDLOCK_RULE_PATH_BENEATH,
>>>> +                   LANDLOCK_NUM_ACCESS_FS) &
>>>> +                        LANDLOCK_ACCESS_FS_REFER))
>>>>           return -EXDEV;
>>>>
>>>>       access_request_parent1 |= LANDLOCK_ACCESS_FS_REFER;
>>>> diff --git a/security/landlock/ruleset.c b/security/landlock/ruleset.c
>>>> index 4b4c9953bb32..c4ed783d655b 100644
>>>> --- a/security/landlock/ruleset.c
>>>> +++ b/security/landlock/ruleset.c
>>>> @@ -233,7 +233,8 @@ static int insert_rule(struct landlock_ruleset 
>>>> *const ruleset,
>>>>                              &(*layers)[0]);
>>>>               if (IS_ERR(new_rule))
>>>>                   return PTR_ERR(new_rule);
>>>> -            rb_replace_node(&this->node, &new_rule->node, 
>>>> &ruleset->root_inode);
>>>> +            rb_replace_node(&this->node, &new_rule->node,
>>>> +                    &ruleset->root_inode);
>>>
>>> This is a pure formatting hunk. :/
>>>
>>    Thats strange, cause in my editor I have normal aligment of arguments.
>>    Could please share clang-format-14 tab size and other format 
>> parameters?
> 
> They are in the .clang-format file. It would be much easier to just run 
> clang-format-14 -i on your changed files. I guess you had different 
> changes between consecutive commits.

  Yep. Thnank you for help here.
> .

  reply	other threads:[~2022-05-18  9:14 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-16 15:20 [PATCH v5 00/15] Network support for Landlock Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 01/15] landlock: access mask renaming Konstantin Meskhidze
2022-05-17  8:12   ` Mickaël Salaün
2022-05-18  9:16     ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 02/15] landlock: landlock_find/insert_rule refactoring Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 03/15] landlock: merge and inherit function refactoring Konstantin Meskhidze
2022-05-17  8:14   ` Mickaël Salaün
2022-05-18  9:18     ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 04/15] landlock: helper functions refactoring Konstantin Meskhidze
2022-05-16 17:14   ` Mickaël Salaün
2022-05-16 17:43     ` Konstantin Meskhidze
2022-05-16 18:28       ` Mickaël Salaün
2022-05-18  9:14         ` Konstantin Meskhidze [this message]
2022-05-16 15:20 ` [PATCH v5 05/15] landlock: landlock_add_rule syscall refactoring Konstantin Meskhidze
2022-05-17  8:04   ` Mickaël Salaün
2022-05-17  8:10     ` Mickaël Salaün
2022-05-19  9:24       ` Konstantin Meskhidze
2022-05-19  9:23     ` Konstantin Meskhidze
2022-05-19 14:37       ` Mickaël Salaün
2022-05-24  8:35         ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 06/15] landlock: user space API network support Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 07/15] landlock: add support network rules Konstantin Meskhidze
2022-05-17  8:27   ` Mickaël Salaün
2022-05-19  9:27     ` Konstantin Meskhidze
2022-05-19 14:42       ` Mickaël Salaün
2022-05-24  8:36         ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 08/15] landlock: TCP network hooks implementation Konstantin Meskhidze
2022-05-17  8:51   ` Mickaël Salaün
2022-05-19 11:40     ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 09/15] seltests/landlock: add tests for bind() hooks Konstantin Meskhidze
2022-05-16 21:11   ` Mickaël Salaün
2022-05-19 12:10     ` Konstantin Meskhidze
2022-05-19 14:29       ` Mickaël Salaün
2022-05-24  8:34         ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 10/15] seltests/landlock: add tests for connect() hooks Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 11/15] seltests/landlock: connect() with AF_UNSPEC tests Konstantin Meskhidze
2022-05-17  8:55   ` Mickaël Salaün
2022-05-19 12:31     ` Konstantin Meskhidze
2022-05-19 15:00       ` Mickaël Salaün
2022-05-24  8:40         ` Konstantin Meskhidze
2022-05-19 15:02       ` Mickaël Salaün
2022-05-24  8:42         ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 12/15] seltests/landlock: rules overlapping test Konstantin Meskhidze
2022-05-16 17:41   ` Mickaël Salaün
2022-05-19 12:24     ` Konstantin Meskhidze
2022-05-19 15:04       ` Mickaël Salaün
2022-05-24  8:55         ` Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 13/15] seltests/landlock: ruleset expanding test Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 14/15] seltests/landlock: invalid user input data test Konstantin Meskhidze
2022-05-16 15:20 ` [PATCH v5 15/15] samples/landlock: adds network demo Konstantin Meskhidze
2022-05-17  9:19   ` Mickaël Salaün
2022-05-19 13:33     ` Konstantin Meskhidze
2022-05-19 15:09       ` Mickaël Salaün
2022-05-24  8:41         ` Konstantin Meskhidze
2022-05-20 10:48 ` [PATCH v5 00/15] Network support for Landlock - UDP discussion Mickaël Salaün
2022-05-25  9:41   ` Konstantin Meskhidze

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=08444718-341f-40db-b7b1-636942269c03@huawei.com \
    --to=konstantin.meskhidze@huawei.com \
    --cc=anton.sirazetdinov@huawei.com \
    --cc=linux-security-module@vger.kernel.org \
    --cc=mic@digikod.net \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=willemdebruijn.kernel@gmail.com \
    --cc=yusongping@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).