diff options
| author | Bob Peterson <rpeterso@redhat.com> | 2020-04-23 14:30:57 -0500 | 
|---|---|---|
| committer | Andreas Gruenbacher <agruenba@redhat.com> | 2020-05-08 14:45:38 +0200 | 
| commit | a8b7528b69d4dc7e94d0338851ff8c929231fc4b (patch) | |
| tree | ea62be8a053fa2dd9ba94407025973fb9f74fbfe | |
| parent | ac9155842829a811c12d3e1868a133fdb8300df0 (diff) | |
gfs2: Fix error exit in do_xmote
Before this patch, if an error was detected from glock function go_sync
by function do_xmote, it would return.  But the function had temporarily
unlocked the gl_lockref spin_lock, and it never re-locked it.  When the
caller of do_xmote tried to unlock it again, it was already unlocked,
which resulted in a corrupted spin_lock value.
This patch makes sure the gl_lockref spin_lock is re-locked after it is
unlocked.
Thanks to Wu Bo <wubo40@huawei.com> for reporting this problem.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
| -rw-r--r-- | fs/gfs2/glock.c | 2 | 
1 files changed, 1 insertions, 1 deletions
| diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index 29f9b6684b74..a1c5f245553f 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -613,7 +613,7 @@ __acquires(&gl->gl_lockref.lock)  				fs_err(sdp, "Error %d syncing glock \n", ret);  				gfs2_dump_glock(NULL, gl, true);  			} -			return; +			goto out;  		}  	}  	if (test_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags)) { | 
