From: Shwetha Acharya Date: Thu, 5 Mar 2026 12:01:52 +0000 (+0530) Subject: rpc_server: Only allocate fsp when counting file locks X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fsamba.git rpc_server: Only allocate fsp when counting file locks Avoids creating fsp, which is not needed unless we are going to count the brlocks. Also uses early continue and removes num_locks variable by assigning the result directly. Signed-off-by: Shwetha Acharya Reviewed-by: Xavi Hernandez Reviewed-by: Shweta Sodani Reviewed-by: Martin Schwenke Reviewed-by: Anoop C S Autobuild-User(master): Anoop C S Autobuild-Date(master): Tue Apr 14 10:02:29 UTC 2026 on atb-devel-224 --- diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c index 5a03daf5f0d..556113faf18 100644 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c @@ -196,7 +196,12 @@ static WERROR net_enum_files(TALLOC_CTX *ctx, for (i=0; i<(*ctr3)->count; i++) { struct files_struct *fsp = NULL; struct byte_range_lock *brl = NULL; - unsigned int num_locks = 0; + + (*ctr3)->array[i].num_locks = 0; + + if (!count_file_locks) { + continue; + } fsp = talloc_zero(talloc_tos(), struct files_struct); if (fsp == NULL) { @@ -204,16 +209,11 @@ static WERROR net_enum_files(TALLOC_CTX *ctx, } fsp->file_id = f_enum_cnt.fids[i]; - if (count_file_locks) { - brl = brl_get_locks_readonly(fsp); - if (brl != NULL) { - num_locks = brl_num_locks(brl); - TALLOC_FREE(brl); - } + brl = brl_get_locks_readonly(fsp); + if (brl != NULL) { + (*ctr3)->array[i].num_locks = brl_num_locks(brl); + TALLOC_FREE(brl); } - - (*ctr3)->array[i].num_locks = num_locks; - TALLOC_FREE(fsp); }