Re: [PATCH] locking/rwsem: Fix up_read_non_owner() warning with DEBUG_RWSEMS

From: Peter Zijlstra
Date: Wed Jun 20 2018 - 05:18:19 EST


On Thu, May 24, 2018 at 09:26:38AM -0400, Waiman Long wrote:
> It was found that the use of up_read_non_owner() in NFS was causing
> the following warning when DEBUG_RWSEMS was configured.
>
> DEBUG_LOCKS_WARN_ON(sem->owner != ((struct task_struct *)(1UL << 0)))
>
> Looking into the rwsem.c file, it was discovered that the corresponding
> down_read_non_owner() function was not setting the owner field properly.
> This is fixed now, and the warning should be gone.
>
> Signed-off-by: Waiman Long <longman@xxxxxxxxxx>

Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>

> ---
> kernel/locking/rwsem.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
> index bc1e507..776308d 100644
> --- a/kernel/locking/rwsem.c
> +++ b/kernel/locking/rwsem.c
> @@ -181,6 +181,7 @@ void down_read_non_owner(struct rw_semaphore *sem)
> might_sleep();
>
> __down_read(sem);
> + rwsem_set_reader_owned(sem);
> }
>
> EXPORT_SYMBOL(down_read_non_owner);
> --
> 1.8.3.1
>