]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
delete queue-4.4/nfsv4.1-fix-oopsable-condition-in-server-callback-races.patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Sep 2016 15:00:43 +0000 (17:00 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Sep 2016 15:00:43 +0000 (17:00 +0200)
queue-4.4/nfsv4.1-fix-oopsable-condition-in-server-callback-races.patch [deleted file]
queue-4.4/series

diff --git a/queue-4.4/nfsv4.1-fix-oopsable-condition-in-server-callback-races.patch b/queue-4.4/nfsv4.1-fix-oopsable-condition-in-server-callback-races.patch
deleted file mode 100644 (file)
index 1a4d9e3..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-From e09c978aae5bedfdb379be80363b024b7d82638b Mon Sep 17 00:00:00 2001
-From: Trond Myklebust <trond.myklebust@primarydata.com>
-Date: Sat, 27 Aug 2016 23:44:04 -0400
-Subject: NFSv4.1: Fix Oopsable condition in server callback races
-
-From: Trond Myklebust <trond.myklebust@primarydata.com>
-
-commit e09c978aae5bedfdb379be80363b024b7d82638b upstream.
-
-The slot table hasn't been an array since v3.7. Ensure that we
-use nfs4_lookup_slot() to access the slot correctly.
-
-Fixes: 87dda67e7386 ("NFSv4.1: Allow SEQUENCE to resize the slot table...")
-Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- fs/nfs/callback_proc.c |    5 +----
- fs/nfs/nfs4session.c   |   33 +++++++++++++++++++++++++++++++++
- fs/nfs/nfs4session.h   |    1 +
- 3 files changed, 35 insertions(+), 4 deletions(-)
-
---- a/fs/nfs/callback_proc.c
-+++ b/fs/nfs/callback_proc.c
-@@ -400,11 +400,8 @@ static bool referring_call_exists(struct
-                               ((u32 *)&rclist->rcl_sessionid.data)[3],
-                               ref->rc_sequenceid, ref->rc_slotid);
--                      spin_lock(&tbl->slot_tbl_lock);
--                      status = (test_bit(ref->rc_slotid, tbl->used_slots) &&
--                                tbl->slots[ref->rc_slotid].seq_nr ==
-+                      status = nfs4_slot_seqid_in_use(tbl, ref->rc_slotid,
-                                       ref->rc_sequenceid);
--                      spin_unlock(&tbl->slot_tbl_lock);
-                       if (status)
-                               goto out;
-               }
---- a/fs/nfs/nfs4session.c
-+++ b/fs/nfs/nfs4session.c
-@@ -135,6 +135,39 @@ static struct nfs4_slot *nfs4_find_or_cr
-       return ERR_PTR(-ENOMEM);
- }
-+static int nfs4_slot_get_seqid(struct nfs4_slot_table  *tbl, u32 slotid,
-+              u32 *seq_nr)
-+      __must_hold(&tbl->slot_tbl_lock)
-+{
-+      struct nfs4_slot *slot;
-+
-+      slot = nfs4_lookup_slot(tbl, slotid);
-+      if (IS_ERR(slot))
-+              return PTR_ERR(slot);
-+      *seq_nr = slot->seq_nr;
-+      return 0;
-+}
-+
-+/*
-+ * nfs4_slot_seqid_in_use - test if a slot sequence id is still in use
-+ *
-+ * Given a slot table, slot id and sequence number, determine if the
-+ * RPC call in question is still in flight. This function is mainly
-+ * intended for use by the callback channel.
-+ */
-+bool nfs4_slot_seqid_in_use(struct nfs4_slot_table *tbl, u32 slotid, u32 seq_nr)
-+{
-+      u32 cur_seq;
-+      bool ret = false;
-+
-+      spin_lock(&tbl->slot_tbl_lock);
-+      if (nfs4_slot_get_seqid(tbl, slotid, &cur_seq) == 0 &&
-+          cur_seq == seq_nr && test_bit(slotid, tbl->used_slots))
-+              ret = true;
-+      spin_unlock(&tbl->slot_tbl_lock);
-+      return ret;
-+}
-+
- /*
-  * nfs4_alloc_slot - efficiently look for a free slot
-  *
---- a/fs/nfs/nfs4session.h
-+++ b/fs/nfs/nfs4session.h
-@@ -77,6 +77,7 @@ extern int nfs4_setup_slot_table(struct
-               unsigned int max_reqs, const char *queue);
- extern void nfs4_shutdown_slot_table(struct nfs4_slot_table *tbl);
- extern struct nfs4_slot *nfs4_alloc_slot(struct nfs4_slot_table *tbl);
-+extern bool nfs4_slot_seqid_in_use(struct nfs4_slot_table  *tbl, u32 slotid, u32 seq_nr);
- extern void nfs4_free_slot(struct nfs4_slot_table *tbl, struct nfs4_slot *slot);
- extern void nfs4_slot_tbl_drain_complete(struct nfs4_slot_table *tbl);
- bool nfs41_wake_and_assign_slot(struct nfs4_slot_table *tbl,
index 7a92d667534b32742fc12ff99ab5b265aa13b038..58844676c1783d4ac271095ad9c9460147334079 100644 (file)
@@ -11,7 +11,6 @@ powerpc-powernv-drop-reference-added-by-kset_find_obj.patch
 powerpc-mm-don-t-alias-user-region-to-other-regions-below-page_offset.patch
 kernfs-don-t-depend-on-d_find_any_alias-when-generating-notifications.patch
 pnfs-the-client-must-not-do-i-o-to-the-ds-if-it-s-lease-has-expired.patch
-nfsv4.1-fix-oopsable-condition-in-server-callback-races.patch
 nfsv4.x-fix-a-refcount-leak-in-nfs_callback_up_net.patch
 nfsd-close-race-between-nfsd4_release_lockowner-and-nfsd4_lock.patch
 pnfs-ensure-layoutget-and-layoutreturn-are-properly-serialised.patch