From: Greg Kroah-Hartman Date: Sat, 13 Apr 2013 03:17:58 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.0.74~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac49bbb567eb8e23f88ffee8163f2636a483b09f;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches 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 --- 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 index 00000000000..5cff9add51c --- /dev/null +++ b/queue-3.4/cifs-allow-passwords-which-begin-with-a-delimitor.patch @@ -0,0 +1,52 @@ +From c369c9a4a7c82d33329d869cbaf93304cc7a0c40 Mon Sep 17 00:00:00 2001 +From: Sachin Prabhu +Date: Tue, 9 Apr 2013 18:17:41 +0100 +Subject: cifs: Allow passwords which begin with a delimitor + +From: Sachin Prabhu + +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 +Acked-by: Jeff Layton +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..1f7923d5455 --- /dev/null +++ b/queue-3.4/scsi-libsas-fix-handling-vacant-phy-in-sas_set_ex_phy.patch @@ -0,0 +1,73 @@ +From d4a2618fa77b5e58ec15342972bd3505a1c3f551 Mon Sep 17 00:00:00 2001 +From: Lukasz Dorau +Date: Wed, 3 Apr 2013 10:27:17 +0200 +Subject: SCSI: libsas: fix handling vacant phy in sas_set_ex_phy() + +From: Lukasz Dorau + +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: [] sysfs_find_dirent+0x12/0x90 +Call Trace: + [] sysfs_get_dirent+0x35/0x80 + [] sysfs_unmerge_group+0x1e/0xb0 + [] dpm_sysfs_remove+0x24/0x90 + [] device_del+0x44/0x1d0 + [] sas_rphy_delete+0x9/0x20 [scsi_transport_sas] + [] sas_destruct_devices+0xe6/0x110 [libsas] + [] process_one_work+0x16c/0x350 + [] worker_thread+0x17a/0x410 + [] kthread+0x96/0xa0 + [] kernel_thread_helper+0x4/0x10 + +Signed-off-by: Lukasz Dorau +Signed-off-by: Pawel Baldysiak +Reviewed-by: Maciej Patelczyk +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-3.4/series b/queue-3.4/series index 55effd91edf..d12e5292fd4 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -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 index 00000000000..94f01208ce8 --- /dev/null +++ b/queue-3.4/target-fix-incorrect-fallthrough-of-alua-standby-offline-transition-cdbs.patch @@ -0,0 +1,50 @@ +From 30f359a6f9da65a66de8cadf959f0f4a0d498bba Mon Sep 17 00:00:00 2001 +From: Nicholas Bellinger +Date: Wed, 10 Apr 2013 15:00:27 -0700 +Subject: target: Fix incorrect fallthrough of ALUA Standby/Offline/Transition CDBs + +From: Nicholas Bellinger + +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 +Cc: Hannes Reinecke +Signed-off-by: Greg Kroah-Hartman + +--- + 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: