lockd: set file_lock start and end when decoding nlm4 testargs
authorJeff Layton <jlayton@kernel.org>
Tue, 14 Mar 2023 10:20:58 +0000 (06:20 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 14 Mar 2023 18:00:55 +0000 (14:00 -0400)
commit7ff84910c66c9144cc0de9d9deed9fb84c03aff0
tree1f95b18e84919a78f4d9dab926661c5ba48c1112
parent9c88ea00fef03031ce6554531e89be82f6a42835
lockd: set file_lock start and end when decoding nlm4 testargs

Commit 6930bcbfb6ce dropped the setting of the file_lock range when
decoding a nlm_lock off the wire. This causes the client side grant
callback to miss matching blocks and reject the lock, only to rerequest
it 30s later.

Add a helper function to set the file_lock range from the start and end
values that the protocol uses, and have the nlm_lock decoder call that to
set up the file_lock args properly.

Fixes: 6930bcbfb6ce ("lockd: detect and reject lock arguments that overflow")
Reported-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Tested-by: Amir Goldstein <amir73il@gmail.com>
Cc: stable@vger.kernel.org #6.0
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/lockd/clnt4xdr.c
fs/lockd/xdr4.c
include/linux/lockd/xdr4.h