From: Greg Kroah-Hartman Date: Mon, 1 Apr 2024 13:55:51 +0000 (+0200) Subject: 6.1-stable patches X-Git-Tag: v6.7.12~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bb35aff290b3e5bb200e0d0fe2d745647b75d66b;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: scsi-libsas-add-a-helper-sas_get_sas_addr_and_dev_type.patch --- diff --git a/queue-6.1/scsi-libsas-add-a-helper-sas_get_sas_addr_and_dev_type.patch b/queue-6.1/scsi-libsas-add-a-helper-sas_get_sas_addr_and_dev_type.patch new file mode 100644 index 00000000000..316c5caac3a --- /dev/null +++ b/queue-6.1/scsi-libsas-add-a-helper-sas_get_sas_addr_and_dev_type.patch @@ -0,0 +1,56 @@ +From a57345279fd311ba679b8083feb0eec5272c7729 Mon Sep 17 00:00:00 2001 +From: Xingui Yang +Date: Thu, 7 Mar 2024 14:14:12 +0000 +Subject: scsi: libsas: Add a helper sas_get_sas_addr_and_dev_type() + +From: Xingui Yang + +commit a57345279fd311ba679b8083feb0eec5272c7729 upstream. + +Add a helper to get attached_sas_addr and device type from disc_resp. + +Suggested-by: John Garry +Signed-off-by: Xingui Yang +Link: https://lore.kernel.org/r/20240307141413.48049-2-yangxingui@huawei.com +Reviewed-by: John Garry +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/libsas/sas_expander.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +--- a/drivers/scsi/libsas/sas_expander.c ++++ b/drivers/scsi/libsas/sas_expander.c +@@ -1651,6 +1651,16 @@ out_err: + + /* ---------- Domain revalidation ---------- */ + ++static void sas_get_sas_addr_and_dev_type(struct smp_disc_resp *disc_resp, ++ u8 *sas_addr, ++ enum sas_device_type *type) ++{ ++ memcpy(sas_addr, disc_resp->disc.attached_sas_addr, SAS_ADDR_SIZE); ++ *type = to_dev_type(&disc_resp->disc); ++ if (*type == SAS_PHY_UNUSED) ++ memset(sas_addr, 0, SAS_ADDR_SIZE); ++} ++ + static int sas_get_phy_discover(struct domain_device *dev, + int phy_id, struct smp_disc_resp *disc_resp) + { +@@ -1704,13 +1714,8 @@ int sas_get_phy_attached_dev(struct doma + return -ENOMEM; + + res = sas_get_phy_discover(dev, phy_id, disc_resp); +- if (res == 0) { +- memcpy(sas_addr, disc_resp->disc.attached_sas_addr, +- SAS_ADDR_SIZE); +- *type = to_dev_type(&disc_resp->disc); +- if (*type == 0) +- memset(sas_addr, 0, SAS_ADDR_SIZE); +- } ++ if (res == 0) ++ sas_get_sas_addr_and_dev_type(disc_resp, sas_addr, type); + kfree(disc_resp); + return res; + } diff --git a/queue-6.1/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch b/queue-6.1/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch index c189df030f5..819b584137c 100644 --- a/queue-6.1/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch +++ b/queue-6.1/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch @@ -30,7 +30,7 @@ Signed-off-by: Greg Kroah-Hartman --- a/drivers/scsi/libsas/sas_expander.c +++ b/drivers/scsi/libsas/sas_expander.c -@@ -1972,6 +1972,7 @@ static int sas_rediscover_dev(struct dom +@@ -1977,6 +1977,7 @@ static int sas_rediscover_dev(struct dom struct expander_device *ex = &dev->ex_dev; struct ex_phy *phy = &ex->ex_phy[phy_id]; enum sas_device_type type = SAS_PHY_UNUSED; @@ -38,7 +38,7 @@ Signed-off-by: Greg Kroah-Hartman u8 sas_addr[SAS_ADDR_SIZE]; char msg[80] = ""; int res; -@@ -1983,33 +1984,41 @@ static int sas_rediscover_dev(struct dom +@@ -1988,33 +1989,41 @@ static int sas_rediscover_dev(struct dom SAS_ADDR(dev->sas_addr), phy_id, msg); memset(sas_addr, 0, SAS_ADDR_SIZE); @@ -88,7 +88,7 @@ Signed-off-by: Greg Kroah-Hartman } else if (SAS_ADDR(sas_addr) == SAS_ADDR(phy->attached_sas_addr) && dev_type_flutter(type, phy->attached_dev_type)) { struct domain_device *ata_dev = sas_ex_to_ata(dev, phy_id); -@@ -2021,7 +2030,7 @@ static int sas_rediscover_dev(struct dom +@@ -2026,7 +2035,7 @@ static int sas_rediscover_dev(struct dom action = ", needs recovery"; pr_debug("ex %016llx phy%02d broadcast flutter%s\n", SAS_ADDR(dev->sas_addr), phy_id, action); @@ -97,7 +97,7 @@ Signed-off-by: Greg Kroah-Hartman } /* we always have to delete the old device when we went here */ -@@ -2030,7 +2039,10 @@ static int sas_rediscover_dev(struct dom +@@ -2035,7 +2044,10 @@ static int sas_rediscover_dev(struct dom SAS_ADDR(phy->attached_sas_addr)); sas_unregister_devs_sas_addr(dev, phy_id, last); diff --git a/queue-6.1/series b/queue-6.1/series index 692aba1e2f0..fb5f419c72c 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -265,4 +265,5 @@ x86-cpu-enable-stibp-on-amd-if-automatic-ibrs-is-enabled.patch tls-fix-use-after-free-on-failed-backlog-decryption.patch scsi-lpfc-correct-size-for-cmdwqe-rspwqe-for-memset.patch scsi-lpfc-correct-size-for-wqe-for-memset.patch +scsi-libsas-add-a-helper-sas_get_sas_addr_and_dev_type.patch scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch