[PATCH] lock reference count improvements

Michael Adam obnox at samba.org
Fri Sep 21 11:23:29 UTC 2018


On 2018-09-18 at 23:09 +0530, Anoop C S via samba-technical wrote:
> Hi,
> 
> Attached are two patches which improves an assertion check and DEBUG statements around lock
> reference count code inside source3/locking.

Good catch, is there a bug for this? Should we have one?

> Reviews are appreciated.

See below:

> Thanks,
> Anoop C S

> From 3e4645f14f3963d5df6b85e5b25514555641d460 Mon Sep 17 00:00:00 2001
> From: Anoop C S <anoopcs at redhat.com>
> Date: Tue, 18 Sep 2018 21:53:40 +0530
> Subject: [PATCH 1/2] s3/locking: Fix assertion check on lock reference count
> 
> lock_ref_count will always hold the old value prior to change. By the
> time current assertion check succeeds lock_ref_count would have already
> reached INT32_MAX. Therefore modifying this assertion to check for a
> value less than i.e, (INT32_MAX - 1).

Is INT32_MAX not supported as a value?
Is INT32_MAX - 1 the largest allowed value?
Note we are already asserting '<', not '<='.


> Signed-off-by: Anoop C S <anoopcs at redhat.com>
> ---
>  source3/locking/posix.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/source3/locking/posix.c b/source3/locking/posix.c
> index 79c33cfb0fa..1ee82b76f28 100644
> --- a/source3/locking/posix.c
> +++ b/source3/locking/posix.c
> @@ -429,7 +429,7 @@ static void increment_lock_ref_count(const files_struct *fsp)
>  		&lock_ref_count, 1);
>  
>  	SMB_ASSERT(NT_STATUS_IS_OK(status));
> -	SMB_ASSERT(lock_ref_count < INT32_MAX);
> +	SMB_ASSERT(lock_ref_count < (INT32_MAX - 1));
>  
>  	DEBUG(10,("lock_ref_count for file %s = %d\n",
>  		  fsp_str_dbg(fsp), (int)lock_ref_count));
> -- 
> 2.17.1
> 

> From 6113aeef666b10f0679d3bbb6a86e916bbdf5bc0 Mon Sep 17 00:00:00 2001
> From: Anoop C S <anoopcs at redhat.com>
> Date: Tue, 18 Sep 2018 21:53:54 +0530
> Subject: [PATCH 2/2] s3/locking: Fix logging of lock reference count
> 
> lock refernce count is always increased and reduced by a value of 1.
> But lock_ref_count variable holds the old value prior to change and
> was being logged wrongly under debug level 10. DEBUG statement must
> log lock_ref_count+1 and lock_ref_count-1 respectively when value
> gets increased and decreased.

This second patch LGTM.

Cheers - Michael

> Signed-off-by: Anoop C S <anoopcs at redhat.com>
> ---
>  source3/locking/posix.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/source3/locking/posix.c b/source3/locking/posix.c
> index 1ee82b76f28..787577408e5 100644
> --- a/source3/locking/posix.c
> +++ b/source3/locking/posix.c
> @@ -432,7 +432,7 @@ static void increment_lock_ref_count(const files_struct *fsp)
>  	SMB_ASSERT(lock_ref_count < (INT32_MAX - 1));
>  
>  	DEBUG(10,("lock_ref_count for file %s = %d\n",
> -		  fsp_str_dbg(fsp), (int)lock_ref_count));
> +		  fsp_str_dbg(fsp), (int)(lock_ref_count + 1)));
>  }
>  
>  /****************************************************************************
> @@ -453,7 +453,7 @@ static void decrement_lock_ref_count(const files_struct *fsp)
>  	SMB_ASSERT(lock_ref_count > 0);
>  
>  	DEBUG(10,("lock_ref_count for file %s = %d\n",
> -		  fsp_str_dbg(fsp), (int)lock_ref_count));
> +		  fsp_str_dbg(fsp), (int)(lock_ref_count - 1)));
>  }
>  
>  /****************************************************************************
> -- 
> 2.17.1
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 163 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20180921/2105e587/signature.sig>


More information about the samba-technical mailing list