[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