mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-23 23:50:51 +07:00
lockd: Fix invalid lockowner cast after vfs_test_lock
[ Upstream commit cd2d644ddba183ec7b451b7c20d5c7cc06fcf0d7 ]
After calling vfs_test_lock() the pointer to a conflicting lock can be
returned, and that lock is not guarunteed to be owned by nlm. In that
case, we cannot cast it to struct nlm_lockowner. Instead return the pid
of that conflicting lock.
Fixes: 646d73e91b
("lockd: Show pid of lockd for remote locks")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
954f0ef51a
commit
a7883d0e67
@ -634,7 +634,7 @@ nlmsvc_testlock(struct svc_rqst *rqstp, struct nlm_file *file,
|
|||||||
conflock->caller = "somehost"; /* FIXME */
|
conflock->caller = "somehost"; /* FIXME */
|
||||||
conflock->len = strlen(conflock->caller);
|
conflock->len = strlen(conflock->caller);
|
||||||
conflock->oh.len = 0; /* don't return OH info */
|
conflock->oh.len = 0; /* don't return OH info */
|
||||||
conflock->svid = ((struct nlm_lockowner *)lock->fl.fl_owner)->pid;
|
conflock->svid = lock->fl.fl_pid;
|
||||||
conflock->fl.fl_type = lock->fl.fl_type;
|
conflock->fl.fl_type = lock->fl.fl_type;
|
||||||
conflock->fl.fl_start = lock->fl.fl_start;
|
conflock->fl.fl_start = lock->fl.fl_start;
|
||||||
conflock->fl.fl_end = lock->fl.fl_end;
|
conflock->fl.fl_end = lock->fl.fl_end;
|
||||||
|
Loading…
Reference in New Issue
Block a user