FAILED: patch "[PATCH] NFS: Fix an Oopsable condition in __nfs_pageio_add_request()" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 56517ab958b7c11030e626250c00b9b1a24b41eb Mon Sep 17 00:00:00 2001
From: Trond Myklebust <[email protected]>
Date: Tue, 25 May 2021 10:23:05 -0400
Subject: [PATCH] NFS: Fix an Oopsable condition in __nfs_pageio_add_request()
Ensure that nfs_pageio_error_cleanup() resets the mirror array contents, so that the structure reflects the fact that it is now empty. Also change the test in nfs_pageio_do_add_request() to be more robust by checking whether or not the list is empty rather than relying on the value of pg_count.
fs/nfs/pagelist.c +5 -4
@@ -1094,15 +1094,16 @@ nfs_pageio_do_add_request(struct nfs_pageio_descriptor *desc,struct nfs_page *prev =NULL ;unsigned int size; -if (mirror->pg_count !=0 ) { - prev =nfs_list_entry (mirror->pg_list.prev); - }else { +if (list_empty (&mirror->pg_list)) {if (desc->pg_ops->pg_init) desc->pg_ops->pg_init (desc, req);if (desc->pg_error <0 )return 0 ; mirror->pg_base = req->wb_pgbase; - } + mirror->pg_count =0 ; + mirror->pg_recoalesce =0 ; + }else + prev =nfs_list_entry (mirror->pg_list.prev);if (desc->pg_maxretrans && req->wb_nio > desc->pg_maxretrans) {if (NFS_SERVER (desc->pg_inode)->flags &NFS_MOUNT_SOFTERR )