From: Greg Kroah-Hartman Date: Sun, 19 Oct 2025 12:00:38 +0000 (+0200) Subject: drop s390 patch X-Git-Tag: v5.15.195~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6d0bc939e35d8315b22bcfe525a8f9ced95f2b00;p=thirdparty%2Fkernel%2Fstable-queue.git drop s390 patch --- diff --git a/queue-5.15/s390-cio-update-purge-function-to-unregister-the-unu.patch b/queue-5.15/s390-cio-update-purge-function-to-unregister-the-unu.patch deleted file mode 100644 index 2dd5441d01..0000000000 --- a/queue-5.15/s390-cio-update-purge-function-to-unregister-the-unu.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 74b0bb4c573f9eca8e5d9227f7c6e357c20a402b Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 1 Oct 2025 15:38:17 +0200 -Subject: s390/cio: Update purge function to unregister the unused subchannels - -From: Vineeth Vijayan - -[ Upstream commit 9daa5a8795865f9a3c93d8d1066785b07ded6073 ] - -Starting with 'commit 2297791c92d0 ("s390/cio: dont unregister -subchannel from child-drivers")', cio no longer unregisters -subchannels when the attached device is invalid or unavailable. - -As an unintended side-effect, the cio_ignore purge function no longer -removes subchannels for devices on the cio_ignore list if no CCW device -is attached. This situation occurs when a CCW device is non-operational -or unavailable - -To ensure the same outcome of the purge function as when the -current cio_ignore list had been active during boot, update the purge -function to remove I/O subchannels without working CCW devices if the -associated device number is found on the cio_ignore list. - -Fixes: 2297791c92d0 ("s390/cio: dont unregister subchannel from child-drivers") -Suggested-by: Peter Oberparleiter -Reviewed-by: Peter Oberparleiter -Signed-off-by: Vineeth Vijayan -Signed-off-by: Heiko Carstens -Signed-off-by: Sasha Levin ---- - drivers/s390/cio/device.c | 37 ++++++++++++++++++++++++------------- - 1 file changed, 24 insertions(+), 13 deletions(-) - -diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c -index 70c5b85d2dfc9..22fa1296a5168 100644 ---- a/drivers/s390/cio/device.c -+++ b/drivers/s390/cio/device.c -@@ -1323,23 +1323,34 @@ void ccw_device_schedule_recovery(void) - spin_unlock_irqrestore(&recovery_lock, flags); - } - --static int purge_fn(struct device *dev, void *data) -+static int purge_fn(struct subchannel *sch, void *data) - { -- struct ccw_device *cdev = to_ccwdev(dev); -- struct ccw_dev_id *id = &cdev->private->dev_id; -- struct subchannel *sch = to_subchannel(cdev->dev.parent); -+ struct ccw_device *cdev; - -- spin_lock_irq(cdev->ccwlock); -- if (is_blacklisted(id->ssid, id->devno) && -- (cdev->private->state == DEV_STATE_OFFLINE) && -- (atomic_cmpxchg(&cdev->private->onoff, 0, 1) == 0)) { -- CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x\n", id->ssid, -- id->devno); -+ spin_lock_irq(&sch->lock); -+ if (sch->st != SUBCHANNEL_TYPE_IO || !sch->schib.pmcw.dnv) -+ goto unlock; -+ -+ if (!is_blacklisted(sch->schid.ssid, sch->schib.pmcw.dev)) -+ goto unlock; -+ -+ cdev = sch_get_cdev(sch); -+ if (cdev) { -+ if (cdev->private->state != DEV_STATE_OFFLINE) -+ goto unlock; -+ -+ if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0) -+ goto unlock; - ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); -- css_sched_sch_todo(sch, SCH_TODO_UNREG); - atomic_set(&cdev->private->onoff, 0); - } -- spin_unlock_irq(cdev->ccwlock); -+ -+ css_sched_sch_todo(sch, SCH_TODO_UNREG); -+ CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x%s\n", sch->schid.ssid, -+ sch->schib.pmcw.dev, cdev ? "" : " (no cdev)"); -+ -+unlock: -+ spin_unlock_irq(&sch->lock); - /* Abort loop in case of pending signal. */ - if (signal_pending(current)) - return -EINTR; -@@ -1355,7 +1366,7 @@ static int purge_fn(struct device *dev, void *data) - int ccw_purge_blacklisted(void) - { - CIO_MSG_EVENT(2, "ccw: purging blacklisted devices\n"); -- bus_for_each_dev(&ccw_bus_type, NULL, NULL, purge_fn); -+ for_each_subchannel_staged(purge_fn, NULL, NULL); - return 0; - } - --- -2.51.0 - diff --git a/queue-5.15/series b/queue-5.15/series index 486e596da0..91129dfbd3 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -143,7 +143,6 @@ scsi-mvsas-use-sas_task_find_rq-for-tagging.patch scsi-mvsas-fix-use-after-free-bugs-in-mvs_work_queue.patch net-mlx4-prevent-potential-use-after-free-in-mlx4_en.patch s390-cio-unregister-the-subchannel-while-purging.patch -s390-cio-update-purge-function-to-unregister-the-unu.patch drm-vmwgfx-copy-drm-hash-table-code-into-driver.patch drm-vmwgfx-fix-use-after-free-in-validation.patch net-sctp-fix-a-null-dereference-in-sctp_disposition-.patch diff --git a/queue-6.1/s390-cio-update-purge-function-to-unregister-the-unu.patch b/queue-6.1/s390-cio-update-purge-function-to-unregister-the-unu.patch deleted file mode 100644 index d4cc914059..0000000000 --- a/queue-6.1/s390-cio-update-purge-function-to-unregister-the-unu.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 39fe5b5fd2e22570728839a83d642a6d1dc04eef Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 1 Oct 2025 15:38:17 +0200 -Subject: s390/cio: Update purge function to unregister the unused subchannels - -From: Vineeth Vijayan - -[ Upstream commit 9daa5a8795865f9a3c93d8d1066785b07ded6073 ] - -Starting with 'commit 2297791c92d0 ("s390/cio: dont unregister -subchannel from child-drivers")', cio no longer unregisters -subchannels when the attached device is invalid or unavailable. - -As an unintended side-effect, the cio_ignore purge function no longer -removes subchannels for devices on the cio_ignore list if no CCW device -is attached. This situation occurs when a CCW device is non-operational -or unavailable - -To ensure the same outcome of the purge function as when the -current cio_ignore list had been active during boot, update the purge -function to remove I/O subchannels without working CCW devices if the -associated device number is found on the cio_ignore list. - -Fixes: 2297791c92d0 ("s390/cio: dont unregister subchannel from child-drivers") -Suggested-by: Peter Oberparleiter -Reviewed-by: Peter Oberparleiter -Signed-off-by: Vineeth Vijayan -Signed-off-by: Heiko Carstens -Signed-off-by: Sasha Levin ---- - drivers/s390/cio/device.c | 37 ++++++++++++++++++++++++------------- - 1 file changed, 24 insertions(+), 13 deletions(-) - -diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c -index bdf5a50bd931d..c3cb73cbd0fc3 100644 ---- a/drivers/s390/cio/device.c -+++ b/drivers/s390/cio/device.c -@@ -1309,23 +1309,34 @@ void ccw_device_schedule_recovery(void) - spin_unlock_irqrestore(&recovery_lock, flags); - } - --static int purge_fn(struct device *dev, void *data) -+static int purge_fn(struct subchannel *sch, void *data) - { -- struct ccw_device *cdev = to_ccwdev(dev); -- struct ccw_dev_id *id = &cdev->private->dev_id; -- struct subchannel *sch = to_subchannel(cdev->dev.parent); -+ struct ccw_device *cdev; - -- spin_lock_irq(cdev->ccwlock); -- if (is_blacklisted(id->ssid, id->devno) && -- (cdev->private->state == DEV_STATE_OFFLINE) && -- (atomic_cmpxchg(&cdev->private->onoff, 0, 1) == 0)) { -- CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x\n", id->ssid, -- id->devno); -+ spin_lock_irq(&sch->lock); -+ if (sch->st != SUBCHANNEL_TYPE_IO || !sch->schib.pmcw.dnv) -+ goto unlock; -+ -+ if (!is_blacklisted(sch->schid.ssid, sch->schib.pmcw.dev)) -+ goto unlock; -+ -+ cdev = sch_get_cdev(sch); -+ if (cdev) { -+ if (cdev->private->state != DEV_STATE_OFFLINE) -+ goto unlock; -+ -+ if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0) -+ goto unlock; - ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); -- css_sched_sch_todo(sch, SCH_TODO_UNREG); - atomic_set(&cdev->private->onoff, 0); - } -- spin_unlock_irq(cdev->ccwlock); -+ -+ css_sched_sch_todo(sch, SCH_TODO_UNREG); -+ CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x%s\n", sch->schid.ssid, -+ sch->schib.pmcw.dev, cdev ? "" : " (no cdev)"); -+ -+unlock: -+ spin_unlock_irq(&sch->lock); - /* Abort loop in case of pending signal. */ - if (signal_pending(current)) - return -EINTR; -@@ -1341,7 +1352,7 @@ static int purge_fn(struct device *dev, void *data) - int ccw_purge_blacklisted(void) - { - CIO_MSG_EVENT(2, "ccw: purging blacklisted devices\n"); -- bus_for_each_dev(&ccw_bus_type, NULL, NULL, purge_fn); -+ for_each_subchannel_staged(purge_fn, NULL, NULL); - return 0; - } - --- -2.51.0 - diff --git a/queue-6.1/series b/queue-6.1/series index 9b206e7076..6e5cae096b 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -28,7 +28,6 @@ scsi-mvsas-fix-use-after-free-bugs-in-mvs_work_queue.patch loongarch-remove-config_acpi_table_upgrade-in-platfo.patch loongarch-init-acpi_gbl_use_global_lock-to-false.patch net-mlx4-prevent-potential-use-after-free-in-mlx4_en.patch -s390-cio-update-purge-function-to-unregister-the-unu.patch drm-vmwgfx-fix-use-after-free-in-validation.patch drm-vmwgfx-fix-copy-paste-typo-in-validation.patch net-sctp-fix-a-null-dereference-in-sctp_disposition-.patch diff --git a/queue-6.6/s390-cio-update-purge-function-to-unregister-the-unu.patch b/queue-6.6/s390-cio-update-purge-function-to-unregister-the-unu.patch deleted file mode 100644 index aa245f7cfc..0000000000 --- a/queue-6.6/s390-cio-update-purge-function-to-unregister-the-unu.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 71dcc2d598c665b5ed9024b2da55750049efac57 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 1 Oct 2025 15:38:17 +0200 -Subject: s390/cio: Update purge function to unregister the unused subchannels - -From: Vineeth Vijayan - -[ Upstream commit 9daa5a8795865f9a3c93d8d1066785b07ded6073 ] - -Starting with 'commit 2297791c92d0 ("s390/cio: dont unregister -subchannel from child-drivers")', cio no longer unregisters -subchannels when the attached device is invalid or unavailable. - -As an unintended side-effect, the cio_ignore purge function no longer -removes subchannels for devices on the cio_ignore list if no CCW device -is attached. This situation occurs when a CCW device is non-operational -or unavailable - -To ensure the same outcome of the purge function as when the -current cio_ignore list had been active during boot, update the purge -function to remove I/O subchannels without working CCW devices if the -associated device number is found on the cio_ignore list. - -Fixes: 2297791c92d0 ("s390/cio: dont unregister subchannel from child-drivers") -Suggested-by: Peter Oberparleiter -Reviewed-by: Peter Oberparleiter -Signed-off-by: Vineeth Vijayan -Signed-off-by: Heiko Carstens -Signed-off-by: Sasha Levin ---- - drivers/s390/cio/device.c | 37 ++++++++++++++++++++++++------------- - 1 file changed, 24 insertions(+), 13 deletions(-) - -diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c -index 6b374026cd4f4..31f46b56e049d 100644 ---- a/drivers/s390/cio/device.c -+++ b/drivers/s390/cio/device.c -@@ -1318,23 +1318,34 @@ void ccw_device_schedule_recovery(void) - spin_unlock_irqrestore(&recovery_lock, flags); - } - --static int purge_fn(struct device *dev, void *data) -+static int purge_fn(struct subchannel *sch, void *data) - { -- struct ccw_device *cdev = to_ccwdev(dev); -- struct ccw_dev_id *id = &cdev->private->dev_id; -- struct subchannel *sch = to_subchannel(cdev->dev.parent); -+ struct ccw_device *cdev; - -- spin_lock_irq(cdev->ccwlock); -- if (is_blacklisted(id->ssid, id->devno) && -- (cdev->private->state == DEV_STATE_OFFLINE) && -- (atomic_cmpxchg(&cdev->private->onoff, 0, 1) == 0)) { -- CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x\n", id->ssid, -- id->devno); -+ spin_lock_irq(&sch->lock); -+ if (sch->st != SUBCHANNEL_TYPE_IO || !sch->schib.pmcw.dnv) -+ goto unlock; -+ -+ if (!is_blacklisted(sch->schid.ssid, sch->schib.pmcw.dev)) -+ goto unlock; -+ -+ cdev = sch_get_cdev(sch); -+ if (cdev) { -+ if (cdev->private->state != DEV_STATE_OFFLINE) -+ goto unlock; -+ -+ if (atomic_cmpxchg(&cdev->private->onoff, 0, 1) != 0) -+ goto unlock; - ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); -- css_sched_sch_todo(sch, SCH_TODO_UNREG); - atomic_set(&cdev->private->onoff, 0); - } -- spin_unlock_irq(cdev->ccwlock); -+ -+ css_sched_sch_todo(sch, SCH_TODO_UNREG); -+ CIO_MSG_EVENT(3, "ccw: purging 0.%x.%04x%s\n", sch->schid.ssid, -+ sch->schib.pmcw.dev, cdev ? "" : " (no cdev)"); -+ -+unlock: -+ spin_unlock_irq(&sch->lock); - /* Abort loop in case of pending signal. */ - if (signal_pending(current)) - return -EINTR; -@@ -1350,7 +1361,7 @@ static int purge_fn(struct device *dev, void *data) - int ccw_purge_blacklisted(void) - { - CIO_MSG_EVENT(2, "ccw: purging blacklisted devices\n"); -- bus_for_each_dev(&ccw_bus_type, NULL, NULL, purge_fn); -+ for_each_subchannel_staged(purge_fn, NULL, NULL); - return 0; - } - --- -2.51.0 - diff --git a/queue-6.6/series b/queue-6.6/series index 558737643a..1ed866f633 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -29,7 +29,6 @@ asoc-sof-ipc4-topology-correct-the-minimum-host-dma-.patch loongarch-remove-config_acpi_table_upgrade-in-platfo.patch loongarch-init-acpi_gbl_use_global_lock-to-false.patch net-mlx4-prevent-potential-use-after-free-in-mlx4_en.patch -s390-cio-update-purge-function-to-unregister-the-unu.patch drm-vmwgfx-fix-a-null-ptr-access-in-the-cursor-snoop.patch drm-vmwgfx-fix-use-after-free-in-validation.patch drm-vmwgfx-fix-copy-paste-typo-in-validation.patch