Unverified Commit 9bb937dc authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!9871 cifs: Fix deadlock in cifs_writepages during reconnect

parents 396c1a6c 76431b11
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -2226,6 +2226,7 @@ wdata_prepare_pages(struct cifs_writedata *wdata, unsigned int found_pages,
		 * back from swapper_space to tmpfs file mapping
		 */

relock_recheck:
		if (nr_pages == 0)
			lock_page(page);
		else if (!trylock_page(page))
@@ -2248,11 +2249,16 @@ wdata_prepare_pages(struct cifs_writedata *wdata, unsigned int found_pages,
			break;
		}

		if (wbc->sync_mode != WB_SYNC_NONE)
		if (PageWriteback(page)) {
			unlock_page(page);
			if (wbc->sync_mode != WB_SYNC_NONE) {
				wait_on_page_writeback(page);
				goto relock_recheck;
			}
			break;
		}

		if (PageWriteback(page) ||
				!clear_page_dirty_for_io(page)) {
		if (!clear_page_dirty_for_io(page)) {
			unlock_page(page);
			break;
		}