]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Apr 2013 03:17:58 +0000 (20:17 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Apr 2013 03:17:58 +0000 (20:17 -0700)
added patches:
cifs-allow-passwords-which-begin-with-a-delimitor.patch
scsi-libsas-fix-handling-vacant-phy-in-sas_set_ex_phy.patch
target-fix-incorrect-fallthrough-of-alua-standby-offline-transition-cdbs.patch

queue-3.4/cifs-allow-passwords-which-begin-with-a-delimitor.patch [new file with mode: 0644]
queue-3.4/scsi-libsas-fix-handling-vacant-phy-in-sas_set_ex_phy.patch [new file with mode: 0644]
queue-3.4/series
queue-3.4/target-fix-incorrect-fallthrough-of-alua-standby-offline-transition-cdbs.patch [new file with mode: 0644]

diff --git a/queue-3.4/cifs-allow-passwords-which-begin-with-a-delimitor.patch b/queue-3.4/cifs-allow-passwords-which-begin-with-a-delimitor.patch
new file mode 100644 (file)
index 0000000..5cff9ad
--- /dev/null
@@ -0,0 +1,52 @@
+From c369c9a4a7c82d33329d869cbaf93304cc7a0c40 Mon Sep 17 00:00:00 2001
+From: Sachin Prabhu <sprabhu@redhat.com>
+Date: Tue, 9 Apr 2013 18:17:41 +0100
+Subject: cifs: Allow passwords which begin with a delimitor
+
+From: Sachin Prabhu <sprabhu@redhat.com>
+
+commit c369c9a4a7c82d33329d869cbaf93304cc7a0c40 upstream.
+
+Fixes a regression in cifs_parse_mount_options where a password
+which begins with a delimitor is parsed incorrectly as being a blank
+password.
+
+Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
+Acked-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/cifs/connect.c |   16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+--- a/fs/cifs/connect.c
++++ b/fs/cifs/connect.c
+@@ -1576,14 +1576,24 @@ cifs_parse_mount_options(const char *mou
+                       }
+                       break;
+               case Opt_blank_pass:
+-                      vol->password = NULL;
+-                      break;
+-              case Opt_pass:
+                       /* passwords have to be handled differently
+                        * to allow the character used for deliminator
+                        * to be passed within them
+                        */
++                      /*
++                       * Check if this is a case where the  password
++                       * starts with a delimiter
++                       */
++                      tmp_end = strchr(data, '=');
++                      tmp_end++;
++                      if (!(tmp_end < end && tmp_end[1] == delim)) {
++                              /* No it is not. Set the password to NULL */
++                              vol->password = NULL;
++                              break;
++                      }
++                      /* Yes it is. Drop down to Opt_pass below.*/
++              case Opt_pass:
+                       /* Obtain the value string */
+                       value = strchr(data, '=');
+                       value++;
diff --git a/queue-3.4/scsi-libsas-fix-handling-vacant-phy-in-sas_set_ex_phy.patch b/queue-3.4/scsi-libsas-fix-handling-vacant-phy-in-sas_set_ex_phy.patch
new file mode 100644 (file)
index 0000000..1f7923d
--- /dev/null
@@ -0,0 +1,73 @@
+From d4a2618fa77b5e58ec15342972bd3505a1c3f551 Mon Sep 17 00:00:00 2001
+From: Lukasz Dorau <lukasz.dorau@intel.com>
+Date: Wed, 3 Apr 2013 10:27:17 +0200
+Subject: SCSI: libsas: fix handling vacant phy in sas_set_ex_phy()
+
+From: Lukasz Dorau <lukasz.dorau@intel.com>
+
+commit d4a2618fa77b5e58ec15342972bd3505a1c3f551 upstream.
+
+If a result of the SMP discover function is PHY VACANT,
+the content of discover response structure (dr) is not valid.
+It sometimes happens that dr->attached_sas_addr can contain
+even SAS address of other phy. In such case an invalid phy
+is created, what causes NULL pointer dereference during
+destruction of expander's phys.
+
+So if a result of SMP function is PHY VACANT, the content of discover
+response structure (dr) must not be copied to phy structure.
+
+This patch fixes the following bug:
+
+BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
+IP: [<ffffffff811c9002>] sysfs_find_dirent+0x12/0x90
+Call Trace:
+  [<ffffffff811c95f5>] sysfs_get_dirent+0x35/0x80
+  [<ffffffff811cb55e>] sysfs_unmerge_group+0x1e/0xb0
+  [<ffffffff813329f4>] dpm_sysfs_remove+0x24/0x90
+  [<ffffffff8132b0f4>] device_del+0x44/0x1d0
+  [<ffffffffa016fc59>] sas_rphy_delete+0x9/0x20 [scsi_transport_sas]
+  [<ffffffffa01a16f6>] sas_destruct_devices+0xe6/0x110 [libsas]
+  [<ffffffff8107ac7c>] process_one_work+0x16c/0x350
+  [<ffffffff8107d84a>] worker_thread+0x17a/0x410
+  [<ffffffff81081b76>] kthread+0x96/0xa0
+  [<ffffffff81464944>] kernel_thread_helper+0x4/0x10
+
+Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
+Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
+Reviewed-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
+Signed-off-by: James Bottomley <JBottomley@Parallels.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/libsas/sas_expander.c |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/drivers/scsi/libsas/sas_expander.c
++++ b/drivers/scsi/libsas/sas_expander.c
+@@ -235,6 +235,17 @@ static void sas_set_ex_phy(struct domain
+       linkrate  = phy->linkrate;
+       memcpy(sas_addr, phy->attached_sas_addr, SAS_ADDR_SIZE);
++      /* Handle vacant phy - rest of dr data is not valid so skip it */
++      if (phy->phy_state == PHY_VACANT) {
++              memset(phy->attached_sas_addr, 0, SAS_ADDR_SIZE);
++              phy->attached_dev_type = NO_DEVICE;
++              if (!test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state)) {
++                      phy->phy_id = phy_id;
++                      goto skip;
++              } else
++                      goto out;
++      }
++
+       phy->attached_dev_type = to_dev_type(dr);
+       if (test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state))
+               goto out;
+@@ -272,6 +283,7 @@ static void sas_set_ex_phy(struct domain
+       phy->phy->maximum_linkrate = dr->pmax_linkrate;
+       phy->phy->negotiated_linkrate = phy->linkrate;
++ skip:
+       if (new_phy)
+               if (sas_phy_add(phy->phy)) {
+                       sas_phy_free(phy->phy);
index 55effd91edf55923f432cc5c25a0a88f62d9d897..d12e5292fd4e28a8927a14998119fa852bbb4c2d 100644 (file)
@@ -3,3 +3,6 @@ asoc-wm8903-fix-the-bypass-to-hp-lineout-when-no-dac-or-adc-is-running.patch
 tracing-fix-double-free-when-function-profile-init-failed.patch
 pm-reboot-call-syscore_shutdown-after-disable_nonboot_cpus.patch
 drm-i915-use-the-correct-size-of-the-gtt-for-placing-the-per-process-entries.patch
+scsi-libsas-fix-handling-vacant-phy-in-sas_set_ex_phy.patch
+cifs-allow-passwords-which-begin-with-a-delimitor.patch
+target-fix-incorrect-fallthrough-of-alua-standby-offline-transition-cdbs.patch
diff --git a/queue-3.4/target-fix-incorrect-fallthrough-of-alua-standby-offline-transition-cdbs.patch b/queue-3.4/target-fix-incorrect-fallthrough-of-alua-standby-offline-transition-cdbs.patch
new file mode 100644 (file)
index 0000000..94f0120
--- /dev/null
@@ -0,0 +1,50 @@
+From 30f359a6f9da65a66de8cadf959f0f4a0d498bba Mon Sep 17 00:00:00 2001
+From: Nicholas Bellinger <nab@linux-iscsi.org>
+Date: Wed, 10 Apr 2013 15:00:27 -0700
+Subject: target: Fix incorrect fallthrough of ALUA Standby/Offline/Transition CDBs
+
+From: Nicholas Bellinger <nab@linux-iscsi.org>
+
+commit 30f359a6f9da65a66de8cadf959f0f4a0d498bba upstream.
+
+This patch fixes a bug where a handful of informational / control CDBs
+that should be allowed during ALUA access state Standby/Offline/Transition
+where incorrectly returning CHECK_CONDITION + ASCQ_04H_ALUA_TG_PT_*.
+
+This includes INQUIRY + REPORT_LUNS, which would end up preventing LUN
+registration when LUN scanning occured during these ALUA access states.
+
+Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
+Cc: Hannes Reinecke <hare@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/target/target_core_alua.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/target/target_core_alua.c
++++ b/drivers/target/target_core_alua.c
+@@ -392,6 +392,7 @@ static inline int core_alua_state_standb
+       case REPORT_LUNS:
+       case RECEIVE_DIAGNOSTIC:
+       case SEND_DIAGNOSTIC:
++              return 0;
+       case MAINTENANCE_IN:
+               switch (cdb[1]) {
+               case MI_REPORT_TARGET_PGS:
+@@ -434,6 +435,7 @@ static inline int core_alua_state_unavai
+       switch (cdb[0]) {
+       case INQUIRY:
+       case REPORT_LUNS:
++              return 0;
+       case MAINTENANCE_IN:
+               switch (cdb[1]) {
+               case MI_REPORT_TARGET_PGS:
+@@ -474,6 +476,7 @@ static inline int core_alua_state_transi
+       switch (cdb[0]) {
+       case INQUIRY:
+       case REPORT_LUNS:
++              return 0;
+       case MAINTENANCE_IN:
+               switch (cdb[1]) {
+               case MI_REPORT_TARGET_PGS: