[PATCH 0/4] cifs: fix several bugs in oplock queue handling (RFC)

Jeff Layton <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
We recently had a customer report panics in the oplock thread:

https://bugzilla.redhat.com/show_bug.cgi?id=516742

It looks like what happened is that an oplock break raced with a
umount, and tcon got torn down before the oplock release call
happened.

They also reported another panic within DeleteTconOplockQEntries. That
function is removing entries from the list but isn't using
list_for_each_entry_safe.

This set is a draft patchset that tries to fix these problems. I'd
appreciate prompt feedback on them. Does this look like a sane approach
to fixing these problems?

Jeff Layton (4):
  cifs: protect GlobalOplock_Q with its own mutex
  cifs: iterate over cifs_oplock_list using list_for_each_entry_safe
  cifs: take reference to inode for oplock breaks
  cifs: hold cifs_oplock_mutex while doing oplock release call

 fs/cifs/cifsfs.c    |   98 +++++++++++++++++++++++++++++----------------------
 fs/cifs/cifsglob.h  |    6 +++-
 fs/cifs/cifsproto.h |    1 -
 fs/cifs/misc.c      |    9 +++--
 fs/cifs/transport.c |   37 ++++++-------------
 5 files changed, 78 insertions(+), 73 deletions(-)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.