| From 27b11428b7de097c42f205beabb1764f4365443b Mon Sep 17 00:00:00 2001 |
| From: "J. Bruce Fields" <bfields@redhat.com> |
| Date: Thu, 8 May 2014 11:19:41 -0400 |
| Subject: nfsd4: warn on finding lockowner without stateid's |
| |
| From: "J. Bruce Fields" <bfields@redhat.com> |
| |
| commit 27b11428b7de097c42f205beabb1764f4365443b upstream. |
| |
| The current code assumes a one-to-one lockowner<->lock stateid |
| correspondance. |
| |
| Signed-off-by: J. Bruce Fields <bfields@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/nfsd/nfs4state.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/fs/nfsd/nfs4state.c |
| +++ b/fs/nfsd/nfs4state.c |
| @@ -4045,6 +4045,10 @@ static bool same_lockowner_ino(struct nf |
| |
| if (!same_owner_str(&lo->lo_owner, owner, clid)) |
| return false; |
| + if (list_empty(&lo->lo_owner.so_stateids)) { |
| + WARN_ON_ONCE(1); |
| + return false; |
| + } |
| lst = list_first_entry(&lo->lo_owner.so_stateids, |
| struct nfs4_ol_stateid, st_perstateowner); |
| return lst->st_file->fi_inode == inode; |