| From 4746597110ffbacaf0ecc0388fe2b73c68eb9cbc Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 21 May 2021 15:08:38 -0400 |
| Subject: fs: dlm: cancel work sync othercon |
| |
| From: Alexander Aring <aahringo@redhat.com> |
| |
| [ Upstream commit c6aa00e3d20c2767ba3f57b64eb862572b9744b3 ] |
| |
| These rx tx flags arguments are for signaling close_connection() from |
| which worker they are called. Obviously the receive worker cannot cancel |
| itself and vice versa for swork. For the othercon the receive worker |
| should only be used, however to avoid deadlocks we should pass the same |
| flags as the original close_connection() was called. |
| |
| Signed-off-by: Alexander Aring <aahringo@redhat.com> |
| Signed-off-by: David Teigland <teigland@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/dlm/lowcomms.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c |
| index 44e2716ac158..0c78fdfb1f6f 100644 |
| --- a/fs/dlm/lowcomms.c |
| +++ b/fs/dlm/lowcomms.c |
| @@ -599,7 +599,7 @@ static void close_connection(struct connection *con, bool and_other, |
| } |
| if (con->othercon && and_other) { |
| /* Will only re-enter once. */ |
| - close_connection(con->othercon, false, true, true); |
| + close_connection(con->othercon, false, tx, rx); |
| } |
| |
| con->rx_leftover = 0; |
| -- |
| 2.30.2 |
| |