--- /dev/null
+From: Vasu Dev <vasu.dev@intel.com>
+Subject: [FcOE] updated comment for order of em and ex locks
+References: bnc #459142
+
+The fc_exch is public but em_lock is static to fc_exch.c,
+so updated comment only in fc_exch.c on order of these locks.
+
+Also removed seq.f_ctl from comments since this field is
+already removed.
+
+Signed-off-by: Vasu Dev <vasu.dev@intel.com>
+Acked-by: Bernhard Walle <bwalle@suse.de>
+---
+
+ drivers/scsi/libfc/fc_exch.c | 5 ++++-
+ include/scsi/libfc.h | 5 ++---
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+
+--- a/drivers/scsi/libfc/fc_exch.c
++++ b/drivers/scsi/libfc/fc_exch.c
+@@ -68,7 +68,8 @@ static struct kmem_cache *fc_em_cachep;
+ */
+ struct fc_exch_mgr {
+ enum fc_class class; /* default class for sequences */
+- spinlock_t em_lock; /* exchange manager lock */
++ spinlock_t em_lock; /* exchange manager lock,
++ must be taken before ex_lock */
+ u16 last_xid; /* last allocated exchange ID */
+ u16 min_xid; /* min exchange ID */
+ u16 max_xid; /* max exchange ID */
+@@ -179,6 +180,8 @@ static struct fc_seq *fc_seq_start_next_
+ * sequence allocation and deallocation must be locked.
+ * - exchange refcnt can be done atomicly without locks.
+ * - sequence allocation must be locked by exch lock.
++ * - If the em_lock and ex_lock must be taken at the same time, then the
++ * em_lock must be taken before the ex_lock.
+ */
+
+ /*
+--- a/include/scsi/libfc.h
++++ b/include/scsi/libfc.h
+@@ -299,11 +299,10 @@ struct fc_seq {
+ /*
+ * Exchange.
+ *
+- * Locking notes: The ex_lock protects changes to the following fields:
+- * esb_stat, f_ctl, seq.ssb_stat, seq.f_ctl.
++ * Locking notes: The ex_lock protects following items:
++ * state, esb_stat, f_ctl, seq.ssb_stat
+ * seq_id
+ * sequence allocation
+- *
+ */
+ struct fc_exch {
+ struct fc_exch_mgr *em; /* exchange manager */