| From 17f1dad19182334fc30e14fd6ad7a0fdbd4f8e7e 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 a93ebffe84b3..f476a90e8aae 100644 |
| --- a/fs/dlm/lowcomms.c |
| +++ b/fs/dlm/lowcomms.c |
| @@ -609,7 +609,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); |
| } |
| if (con->rx_page) { |
| __free_page(con->rx_page); |
| -- |
| 2.30.2 |
| |