It looks like this no longer applies cleanly. Can you recheck fs/cifs/smb2pdu.c (function smb2_reconnect_server) and see if it applies now that it has changed e.g. /* allocate a dummy tcon struct used for reconnect */ tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL); if (!tcon) { resched = true; list_for_each_entry_safe(ses, ses2, &tmp_ses_list, rlist) { list_del_init(&ses->rlist); cifs_put_smb_ses(ses); } goto done; } You had this: --- fs/cifs/smb2pdu.c +++ fs/cifs/smb2pdu.c @@ -3858,7 +3858,7 @@ void smb2_reconnect_server(struct work_struct *work) tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL); if (!tcon) { resched = true; - list_del_init(&ses->rlist); + list_del_init(&pserver->smb_ses_list); cifs_put_smb_ses(ses); goto done; } On Fri, Apr 1, 2022 at 2:23 AM Jakob Koschel <jakobkoschel@xxxxxxxxx> wrote: > > When list_for_each_entry() completes the iteration over the whole list > without breaking the loop, the iterator variable will *always* be a > bogus pointer computed based on the head element. > > To avoid type confusion use the actual list head directly instead of > the last iterator value. > > Signed-off-by: Jakob Koschel <jakobkoschel@xxxxxxxxx> > --- > fs/cifs/smb2pdu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c > index 7e7909b1ae11..4ac86b77a7c9 100644 > --- a/fs/cifs/smb2pdu.c > +++ b/fs/cifs/smb2pdu.c > @@ -3858,7 +3858,7 @@ void smb2_reconnect_server(struct work_struct *work) > tcon = kzalloc(sizeof(struct cifs_tcon), GFP_KERNEL); > if (!tcon) { > resched = true; > - list_del_init(&ses->rlist); > + list_del_init(&pserver->smb_ses_list); > cifs_put_smb_ses(ses); > goto done; > } > > base-commit: f82da161ea75dc4db21b2499e4b1facd36dab275 > -- > 2.25.1 > -- Thanks, Steve