[lvc-project] [PATCH] smb: remove redundant DACL check in smb_check_perm_dacl
Fedor Pchelkin
pchelkin at ispras.ru
Mon Dec 1 23:35:01 MSK 2025
On Sun, 30. Nov 01:04, Alexey Velichayshiy wrote:
> Problem Analysis:
> 1. Permanently false condition:
> The check `if (!pdacl->num_aces)` inside the `FILE_MAXIMAL_ACCESS_LE` block
> can never execute because when `pdacl->num_aces == 0`, the function already
> jumps to `err_out` in the earlier DACL validation check at line 35.
> 2. Logical contradiction:
> The code contains conflicting semantics for empty DACL handling:
> - First check (line 35): Empty DACL → access denied → goto err_out
> - Second check (line 65): Empty DACL → grant GENERIC_ALL_FLAGS
> This creates unreachable code and semantic inconsistency.
Необходимо обойтись без номеров строк в описании патча — они зависят от
версии ядра, которой в описании патча не указано. Откуда читателю патча
знать, на какой код смотрел автор патча?
Номера строк в описании возможны лишь когда они идут в виде полученного
трейса ошибки с указанием версии и прочей технической информацией. Как
пример: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=17679ac6df6c4830ba711835aa8cf961be36cfa1
Текущий случай к такому не относится.
Для качественного описания проблемы необходимо обойтись без номеров
строк. Это может показаться странным, но конкретные номера строк в 99%
случаев не несут полезной информации. Грамотное описание позволит
читателю понять происходящее и без этого.
Разжёвывать переходы кода, дублировать фрагменты кода, если это не
позволяет как-то более понятным языком пояснить проблему, также не нужно.
В данном случае они лишь делают описание патча тяжёлым для восприятия.
Чем чётче, понятнее и лаконичнее (в разумной степени) формулировки, тем
лучше.
>
> Solution:
> Remove the unreachable code block
> as the most concise solution with no functional impact.
Странные переносы строк. Не нужно делать строки короткими. Допускается
до 75 символов.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Signed-off-by: Alexey Velichayshiy <a.velichayshiy at ispras.ru>
> ---
> fs/smb/server/smbacl.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/fs/smb/server/smbacl.c b/fs/smb/server/smbacl.c
> index 5aa7a66334d9..05598d994a68 100644
> --- a/fs/smb/server/smbacl.c
> +++ b/fs/smb/server/smbacl.c
> @@ -1307,9 +1307,6 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
> granted |= le32_to_cpu(ace->access_req);
> ace = (struct smb_ace *)((char *)ace + le16_to_cpu(ace->size));
> }
> -
> - if (!pdacl->num_aces)
> - granted = GENERIC_ALL_FLAGS;
> }
>
> if (!uid)
> --
> 2.43.0
More information about the lvc-project
mailing list