merged into cifs-2.6.git for-next On Sun, Dec 16, 2018 at 4:44 PM Long Li <longli@xxxxxxxxxxxxxxxxx> wrote: > > From: Long Li <longli@xxxxxxxxxxxxx> > > When pinning memory failed, we should return the correct error code and > rewind the SMB credits. > > Reported-by: Murphy Zhou <jencce.kernel@xxxxxxxxx> > Signed-off-by: Long Li <longli@xxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Cc: Murphy Zhou <jencce.kernel@xxxxxxxxx> > --- > fs/cifs/file.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/fs/cifs/file.c b/fs/cifs/file.c > index c9bc56b..3467351 100644 > --- a/fs/cifs/file.c > +++ b/fs/cifs/file.c > @@ -2630,6 +2630,9 @@ cifs_write_from_iter(loff_t offset, size_t len, struct iov_iter *from, > result, from->type, > from->iov_offset, from->count); > dump_stack(); > + > + rc = result; > + add_credits_and_wake_if(server, credits, 0); > break; > } > cur_len = (size_t)result; > @@ -3313,13 +3316,16 @@ cifs_send_async_read(loff_t offset, size_t len, struct cifsFileInfo *open_file, > cur_len, &start); > if (result < 0) { > cifs_dbg(VFS, > - "couldn't get user pages (cur_len=%zd)" > + "couldn't get user pages (rc=%zd)" > " iter type %d" > " iov_offset %zd count %zd\n", > result, direct_iov.type, > direct_iov.iov_offset, > direct_iov.count); > dump_stack(); > + > + rc = result; > + add_credits_and_wake_if(server, credits, 0); > break; > } > cur_len = (size_t)result; > -- > 2.7.4 > -- Thanks, Steve