From: Sasha Levin Date: Mon, 1 Jul 2024 13:16:30 +0000 (-0400) Subject: Fixes for 6.9 X-Git-Tag: v4.19.317~102 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c15ed5182ba7db13738e0e032d9863a6d1eb7479;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 6.9 Signed-off-by: Sasha Levin --- diff --git a/queue-6.9/ata-libata-core-fix-null-pointer-dereference-on-erro.patch b/queue-6.9/ata-libata-core-fix-null-pointer-dereference-on-erro.patch new file mode 100644 index 00000000000..0c4294d5f36 --- /dev/null +++ b/queue-6.9/ata-libata-core-fix-null-pointer-dereference-on-erro.patch @@ -0,0 +1,78 @@ +From bc42ccece9919d4723db19d584749ad9bff6872b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 29 Jun 2024 14:42:11 +0200 +Subject: ata: libata-core: Fix null pointer dereference on error + +From: Niklas Cassel + +[ Upstream commit 5d92c7c566dc76d96e0e19e481d926bbe6631c1e ] + +If the ata_port_alloc() call in ata_host_alloc() fails, +ata_host_release() will get called. + +However, the code in ata_host_release() tries to free ata_port struct +members unconditionally, which can lead to the following: + +BUG: unable to handle page fault for address: 0000000000003990 +PGD 0 P4D 0 +Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI +CPU: 10 PID: 594 Comm: (udev-worker) Not tainted 6.10.0-rc5 #44 +Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-2.fc40 04/01/2014 +RIP: 0010:ata_host_release.cold+0x2f/0x6e [libata] +Code: e4 4d 63 f4 44 89 e2 48 c7 c6 90 ad 32 c0 48 c7 c7 d0 70 33 c0 49 83 c6 0e 41 +RSP: 0018:ffffc90000ebb968 EFLAGS: 00010246 +RAX: 0000000000000041 RBX: ffff88810fb52e78 RCX: 0000000000000000 +RDX: 0000000000000000 RSI: ffff88813b3218c0 RDI: ffff88813b3218c0 +RBP: ffff88810fb52e40 R08: 0000000000000000 R09: 6c65725f74736f68 +R10: ffffc90000ebb738 R11: 73692033203a746e R12: 0000000000000004 +R13: 0000000000000000 R14: 0000000000000011 R15: 0000000000000006 +FS: 00007f6cc55b9980(0000) GS:ffff88813b300000(0000) knlGS:0000000000000000 +CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +CR2: 0000000000003990 CR3: 00000001122a2000 CR4: 0000000000750ef0 +PKRU: 55555554 +Call Trace: + + ? __die_body.cold+0x19/0x27 + ? page_fault_oops+0x15a/0x2f0 + ? exc_page_fault+0x7e/0x180 + ? asm_exc_page_fault+0x26/0x30 + ? ata_host_release.cold+0x2f/0x6e [libata] + ? ata_host_release.cold+0x2f/0x6e [libata] + release_nodes+0x35/0xb0 + devres_release_group+0x113/0x140 + ata_host_alloc+0xed/0x120 [libata] + ata_host_alloc_pinfo+0x14/0xa0 [libata] + ahci_init_one+0x6c9/0xd20 [ahci] + +Do not access ata_port struct members unconditionally. + +Fixes: 633273a3ed1c ("libata-pmp: hook PMP support and enable it") +Cc: stable@vger.kernel.org +Reviewed-by: Damien Le Moal +Reviewed-by: Hannes Reinecke +Reviewed-by: John Garry +Link: https://lore.kernel.org/r/20240629124210.181537-7-cassel@kernel.org +Signed-off-by: Niklas Cassel +Stable-dep-of: f6549f538fe0 ("ata,scsi: libata-core: Do not leak memory for ata_port struct members") +Signed-off-by: Sasha Levin +--- + drivers/ata/libata-core.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c +index 28caed151e05f..2cf597edc013b 100644 +--- a/drivers/ata/libata-core.c ++++ b/drivers/ata/libata-core.c +@@ -5562,6 +5562,9 @@ static void ata_host_release(struct kref *kref) + for (i = 0; i < host->n_ports; i++) { + struct ata_port *ap = host->ports[i]; + ++ if (!ap) ++ continue; ++ + kfree(ap->pmp_link); + kfree(ap->slave_link); + kfree(ap->ncq_sense_buf); +-- +2.43.0 + diff --git a/queue-6.9/ata-scsi-libata-core-do-not-leak-memory-for-ata_port.patch b/queue-6.9/ata-scsi-libata-core-do-not-leak-memory-for-ata_port.patch new file mode 100644 index 00000000000..f581ae5bf09 --- /dev/null +++ b/queue-6.9/ata-scsi-libata-core-do-not-leak-memory-for-ata_port.patch @@ -0,0 +1,129 @@ +From 842ea4a0a8ea44e2009bbe170f5d727280298b34 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 29 Jun 2024 14:42:12 +0200 +Subject: ata,scsi: libata-core: Do not leak memory for ata_port struct members + +From: Niklas Cassel + +[ Upstream commit f6549f538fe0b2c389e1a7037f4e21039e25137a ] + +libsas is currently not freeing all the struct ata_port struct members, +e.g. ncq_sense_buf for a driver supporting Command Duration Limits (CDL). + +Add a function, ata_port_free(), that is used to free a ata_port, +including its struct members. It makes sense to keep the code related to +freeing a ata_port in its own function, which will also free all the +struct members of struct ata_port. + +Fixes: 18bd7718b5c4 ("scsi: ata: libata: Handle completion of CDL commands using policy 0xD") +Reviewed-by: John Garry +Link: https://lore.kernel.org/r/20240629124210.181537-8-cassel@kernel.org +Signed-off-by: Niklas Cassel +Signed-off-by: Sasha Levin +--- + drivers/ata/libata-core.c | 24 ++++++++++++++---------- + drivers/scsi/libsas/sas_ata.c | 6 +++--- + drivers/scsi/libsas/sas_discover.c | 2 +- + include/linux/libata.h | 1 + + 4 files changed, 19 insertions(+), 14 deletions(-) + +diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c +index 2cf597edc013b..62237df4fe77e 100644 +--- a/drivers/ata/libata-core.c ++++ b/drivers/ata/libata-core.c +@@ -5534,6 +5534,18 @@ struct ata_port *ata_port_alloc(struct ata_host *host) + return ap; + } + ++void ata_port_free(struct ata_port *ap) ++{ ++ if (!ap) ++ return; ++ ++ kfree(ap->pmp_link); ++ kfree(ap->slave_link); ++ kfree(ap->ncq_sense_buf); ++ kfree(ap); ++} ++EXPORT_SYMBOL_GPL(ata_port_free); ++ + static void ata_devres_release(struct device *gendev, void *res) + { + struct ata_host *host = dev_get_drvdata(gendev); +@@ -5560,15 +5572,7 @@ static void ata_host_release(struct kref *kref) + int i; + + for (i = 0; i < host->n_ports; i++) { +- struct ata_port *ap = host->ports[i]; +- +- if (!ap) +- continue; +- +- kfree(ap->pmp_link); +- kfree(ap->slave_link); +- kfree(ap->ncq_sense_buf); +- kfree(ap); ++ ata_port_free(host->ports[i]); + host->ports[i] = NULL; + } + kfree(host); +@@ -5951,7 +5955,7 @@ int ata_host_register(struct ata_host *host, const struct scsi_host_template *sh + * allocation time. + */ + for (i = host->n_ports; host->ports[i]; i++) +- kfree(host->ports[i]); ++ ata_port_free(host->ports[i]); + + /* give ports names and add SCSI hosts */ + for (i = 0; i < host->n_ports; i++) { +diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c +index 12e2653846e3f..70891a1e98a01 100644 +--- a/drivers/scsi/libsas/sas_ata.c ++++ b/drivers/scsi/libsas/sas_ata.c +@@ -610,15 +610,15 @@ int sas_ata_init(struct domain_device *found_dev) + + rc = ata_sas_tport_add(ata_host->dev, ap); + if (rc) +- goto destroy_port; ++ goto free_port; + + found_dev->sata_dev.ata_host = ata_host; + found_dev->sata_dev.ap = ap; + + return 0; + +-destroy_port: +- kfree(ap); ++free_port: ++ ata_port_free(ap); + free_host: + ata_host_put(ata_host); + return rc; +diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c +index 8fb7c41c09624..48d975c6dbf2c 100644 +--- a/drivers/scsi/libsas/sas_discover.c ++++ b/drivers/scsi/libsas/sas_discover.c +@@ -301,7 +301,7 @@ void sas_free_device(struct kref *kref) + + if (dev_is_sata(dev) && dev->sata_dev.ap) { + ata_sas_tport_delete(dev->sata_dev.ap); +- kfree(dev->sata_dev.ap); ++ ata_port_free(dev->sata_dev.ap); + ata_host_put(dev->sata_dev.ata_host); + dev->sata_dev.ata_host = NULL; + dev->sata_dev.ap = NULL; +diff --git a/include/linux/libata.h b/include/linux/libata.h +index 324d792e7c786..186a6cbbbfbc6 100644 +--- a/include/linux/libata.h ++++ b/include/linux/libata.h +@@ -1242,6 +1242,7 @@ extern int ata_slave_link_init(struct ata_port *ap); + extern struct ata_port *ata_sas_port_alloc(struct ata_host *, + struct ata_port_info *, struct Scsi_Host *); + extern void ata_port_probe(struct ata_port *ap); ++extern void ata_port_free(struct ata_port *ap); + extern int ata_sas_tport_add(struct device *parent, struct ata_port *ap); + extern void ata_sas_tport_delete(struct ata_port *ap); + extern int ata_sas_slave_configure(struct scsi_device *, struct ata_port *); +-- +2.43.0 + diff --git a/queue-6.9/counter-ti-eqep-enable-clock-at-probe.patch b/queue-6.9/counter-ti-eqep-enable-clock-at-probe.patch new file mode 100644 index 00000000000..bee883027e3 --- /dev/null +++ b/queue-6.9/counter-ti-eqep-enable-clock-at-probe.patch @@ -0,0 +1,59 @@ +From 38ceee1bf14dd03b957879cb71c089977af25c6e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 21 Jun 2024 17:22:40 -0500 +Subject: counter: ti-eqep: enable clock at probe + +From: David Lechner + +[ Upstream commit 0cf81c73e4c6a4861128a8f27861176ec312af4e ] + +The TI eQEP clock is both a functional and interface clock. Since it is +required for the device to function, we should be enabling it at probe. + +Up to now, we've just been lucky that the clock was enabled by something +else on the system already. + +Fixes: f213729f6796 ("counter: new TI eQEP driver") +Reviewed-by: Judith Mendez +Signed-off-by: David Lechner +Link: https://lore.kernel.org/r/20240621-ti-eqep-enable-clock-v2-1-edd3421b54d4@baylibre.com +Signed-off-by: William Breathitt Gray +Signed-off-by: Sasha Levin +--- + drivers/counter/ti-eqep.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/counter/ti-eqep.c b/drivers/counter/ti-eqep.c +index b0f24cf3e891d..4d3de4a35801f 100644 +--- a/drivers/counter/ti-eqep.c ++++ b/drivers/counter/ti-eqep.c +@@ -6,6 +6,7 @@ + */ + + #include ++#include + #include + #include + #include +@@ -376,6 +377,7 @@ static int ti_eqep_probe(struct platform_device *pdev) + struct counter_device *counter; + struct ti_eqep_cnt *priv; + void __iomem *base; ++ struct clk *clk; + int err; + + counter = devm_counter_alloc(dev, sizeof(*priv)); +@@ -415,6 +417,10 @@ static int ti_eqep_probe(struct platform_device *pdev) + pm_runtime_enable(dev); + pm_runtime_get_sync(dev); + ++ clk = devm_clk_get_enabled(dev, NULL); ++ if (IS_ERR(clk)) ++ return dev_err_probe(dev, PTR_ERR(clk), "failed to enable clock\n"); ++ + err = counter_add(counter); + if (err < 0) { + pm_runtime_put_sync(dev); +-- +2.43.0 + diff --git a/queue-6.9/i2c-testunit-discard-write-requests-while-old-comman.patch b/queue-6.9/i2c-testunit-discard-write-requests-while-old-comman.patch new file mode 100644 index 00000000000..ae24f9b5332 --- /dev/null +++ b/queue-6.9/i2c-testunit-discard-write-requests-while-old-comman.patch @@ -0,0 +1,38 @@ +From b5f09ec3eb570e8c24f8380e0187c6ba0ec890d4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 27 Jun 2024 13:14:48 +0200 +Subject: i2c: testunit: discard write requests while old command is running + +From: Wolfram Sang + +[ Upstream commit c116deafd1a5cc1e9739099eb32114e90623209c ] + +When clearing registers on new write requests was added, the protection +for currently running commands was missed leading to concurrent access +to the testunit registers. Check the flag beforehand. + +Fixes: b39ab96aa894 ("i2c: testunit: add support for block process calls") +Signed-off-by: Wolfram Sang +Reviewed-by: Andi Shyti +Signed-off-by: Sasha Levin +--- + drivers/i2c/i2c-slave-testunit.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/i2c/i2c-slave-testunit.c b/drivers/i2c/i2c-slave-testunit.c +index a5dcbc3c2c141..ca43e98cae1b2 100644 +--- a/drivers/i2c/i2c-slave-testunit.c ++++ b/drivers/i2c/i2c-slave-testunit.c +@@ -121,6 +121,9 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client, + break; + + case I2C_SLAVE_WRITE_REQUESTED: ++ if (test_bit(TU_FLAG_IN_PROCESS, &tu->flags)) ++ return -EBUSY; ++ + memset(tu->regs, 0, TU_NUM_REGS); + tu->reg_idx = 0; + break; +-- +2.43.0 + diff --git a/queue-6.9/i2c-testunit-don-t-erase-registers-after-stop.patch b/queue-6.9/i2c-testunit-don-t-erase-registers-after-stop.patch new file mode 100644 index 00000000000..982011e5afc --- /dev/null +++ b/queue-6.9/i2c-testunit-don-t-erase-registers-after-stop.patch @@ -0,0 +1,38 @@ +From d8a3eb46e994db58f8df80438a3b9a29ee5dafd2 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 27 Jun 2024 13:14:47 +0200 +Subject: i2c: testunit: don't erase registers after STOP + +From: Wolfram Sang + +[ Upstream commit c422b6a630240f706063e0ecbb894aa8491b1fa1 ] + +STOP fallsthrough to WRITE_REQUESTED but this became problematic when +clearing the testunit registers was added to the latter. Actually, there +is no reason to clear the testunit state after STOP. Doing it when a new +WRITE_REQUESTED arrives is enough. So, no need to fallthrough, at all. + +Fixes: b39ab96aa894 ("i2c: testunit: add support for block process calls") +Signed-off-by: Wolfram Sang +Reviewed-by: Andi Shyti +Signed-off-by: Sasha Levin +--- + drivers/i2c/i2c-slave-testunit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/i2c/i2c-slave-testunit.c b/drivers/i2c/i2c-slave-testunit.c +index a49642bbae4b7..a5dcbc3c2c141 100644 +--- a/drivers/i2c/i2c-slave-testunit.c ++++ b/drivers/i2c/i2c-slave-testunit.c +@@ -118,7 +118,7 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client, + queue_delayed_work(system_long_wq, &tu->worker, + msecs_to_jiffies(10 * tu->regs[TU_REG_DELAY])); + } +- fallthrough; ++ break; + + case I2C_SLAVE_WRITE_REQUESTED: + memset(tu->regs, 0, TU_NUM_REGS); +-- +2.43.0 + diff --git a/queue-6.9/iio-xilinx-ams-don-t-include-ams_ctrl_channels-in-sc.patch b/queue-6.9/iio-xilinx-ams-don-t-include-ams_ctrl_channels-in-sc.patch new file mode 100644 index 00000000000..e4da21eb9b2 --- /dev/null +++ b/queue-6.9/iio-xilinx-ams-don-t-include-ams_ctrl_channels-in-sc.patch @@ -0,0 +1,46 @@ +From 85b1b1ec2bd1ed6eccc8ffa14888b5139123b0be Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 11 Mar 2024 12:28:00 -0400 +Subject: iio: xilinx-ams: Don't include ams_ctrl_channels in scan_mask + +From: Sean Anderson + +[ Upstream commit 89b898c627a49b978a4c323ea6856eacfc21f6ba ] + +ams_enable_channel_sequence constructs a "scan_mask" for all the PS and +PL channels. This works out fine, since scan_index for these channels is +less than 64. However, it also includes the ams_ctrl_channels, where +scan_index is greater than 64, triggering undefined behavior. Since we +don't need these channels anyway, just exclude them. + +Fixes: d5c70627a794 ("iio: adc: Add Xilinx AMS driver") +Signed-off-by: Sean Anderson +Link: https://lore.kernel.org/r/20240311162800.11074-1-sean.anderson@linux.dev +Signed-off-by: Jonathan Cameron +Signed-off-by: Sasha Levin +--- + drivers/iio/adc/xilinx-ams.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/drivers/iio/adc/xilinx-ams.c b/drivers/iio/adc/xilinx-ams.c +index f0b71a1220e02..f52abf759260f 100644 +--- a/drivers/iio/adc/xilinx-ams.c ++++ b/drivers/iio/adc/xilinx-ams.c +@@ -414,8 +414,12 @@ static void ams_enable_channel_sequence(struct iio_dev *indio_dev) + + /* Run calibration of PS & PL as part of the sequence */ + scan_mask = BIT(0) | BIT(AMS_PS_SEQ_MAX); +- for (i = 0; i < indio_dev->num_channels; i++) +- scan_mask |= BIT_ULL(indio_dev->channels[i].scan_index); ++ for (i = 0; i < indio_dev->num_channels; i++) { ++ const struct iio_chan_spec *chan = &indio_dev->channels[i]; ++ ++ if (chan->scan_index < AMS_CTRL_SEQ_BASE) ++ scan_mask |= BIT_ULL(chan->scan_index); ++ } + + if (ams->ps_base) { + /* put sysmon in a soft reset to change the sequence */ +-- +2.43.0 + diff --git a/queue-6.9/kbuild-doc-update-default-install_mod_dir-from-extra.patch b/queue-6.9/kbuild-doc-update-default-install_mod_dir-from-extra.patch new file mode 100644 index 00000000000..590847080f7 --- /dev/null +++ b/queue-6.9/kbuild-doc-update-default-install_mod_dir-from-extra.patch @@ -0,0 +1,62 @@ +From 71c992176ffa74b010035befe9881ca8e6bdb0a9 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 14 Jun 2024 15:15:02 +0800 +Subject: kbuild: doc: Update default INSTALL_MOD_DIR from extra to updates + +From: Mark-PK Tsai + +[ Upstream commit 07d4cc2e7444356faac6552d0688a1670cc9d749 ] + +The default INSTALL_MOD_DIR was changed from 'extra' to +'updates' in commit b74d7bb7ca24 ("kbuild: Modify default +INSTALL_MOD_DIR from extra to updates"). + +This commit updates the documentation to align with the +latest kernel. + +Fixes: b74d7bb7ca24 ("kbuild: Modify default INSTALL_MOD_DIR from extra to updates") +Signed-off-by: Mark-PK Tsai +Signed-off-by: Masahiro Yamada +Signed-off-by: Sasha Levin +--- + Documentation/kbuild/modules.rst | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Documentation/kbuild/modules.rst b/Documentation/kbuild/modules.rst +index a1f3eb7a43e23..131863142cbb3 100644 +--- a/Documentation/kbuild/modules.rst ++++ b/Documentation/kbuild/modules.rst +@@ -128,7 +128,7 @@ executed to make module versioning work. + + modules_install + Install the external module(s). The default location is +- /lib/modules//extra/, but a prefix may ++ /lib/modules//updates/, but a prefix may + be added with INSTALL_MOD_PATH (discussed in section 5). + + clean +@@ -417,7 +417,7 @@ directory: + + And external modules are installed in: + +- /lib/modules/$(KERNELRELEASE)/extra/ ++ /lib/modules/$(KERNELRELEASE)/updates/ + + 5.1 INSTALL_MOD_PATH + -------------------- +@@ -438,10 +438,10 @@ And external modules are installed in: + ------------------- + + External modules are by default installed to a directory under +- /lib/modules/$(KERNELRELEASE)/extra/, but you may wish to ++ /lib/modules/$(KERNELRELEASE)/updates/, but you may wish to + locate modules for a specific functionality in a separate + directory. For this purpose, use INSTALL_MOD_DIR to specify an +- alternative name to "extra.":: ++ alternative name to "updates.":: + + $ make INSTALL_MOD_DIR=gandalf -C $KDIR \ + M=$PWD modules_install +-- +2.43.0 + diff --git a/queue-6.9/kbuild-fix-build-target-deb-pkg-ln-failed-to-create-.patch b/queue-6.9/kbuild-fix-build-target-deb-pkg-ln-failed-to-create-.patch new file mode 100644 index 00000000000..a2c08f6fcf2 --- /dev/null +++ b/queue-6.9/kbuild-fix-build-target-deb-pkg-ln-failed-to-create-.patch @@ -0,0 +1,41 @@ +From fd9ac84fcd1e86539d106533b8f0520d34855bd3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 15 Jun 2024 23:34:54 -0600 +Subject: kbuild: Fix build target deb-pkg: ln: failed to create hard link + +From: Thayne Harbaugh + +[ Upstream commit c61566538968ffb040acc411246fd7ad38c7e8c9 ] + +The make deb-pkg target calls debian-orig which attempts to either +hard link the source .tar to the build-output location or copy the +source .tar to the build-output location. The test to determine +whether to ln or cp is incorrectly expanded by Make and consequently +always attempts to ln the source .tar. This fix corrects the escaping +of '$' so that the test is expanded by the shell rather than by Make +and appropriately selects between ln and cp. + +Fixes: b44aa8c96e9e ("kbuild: deb-pkg: make .orig tarball a hard link if possible") +Signed-off-by: Thayne Harbaugh +Signed-off-by: Masahiro Yamada +Signed-off-by: Sasha Levin +--- + scripts/Makefile.package | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/Makefile.package b/scripts/Makefile.package +index 38653f3e81088..bf016af8bf8ad 100644 +--- a/scripts/Makefile.package ++++ b/scripts/Makefile.package +@@ -103,7 +103,7 @@ debian-orig: private version = $(shell dpkg-parsechangelog -S Version | sed 's/- + debian-orig: private orig-name = $(source)_$(version).orig.tar$(debian-orig-suffix) + debian-orig: mkdebian-opts = --need-source + debian-orig: linux.tar$(debian-orig-suffix) debian +- $(Q)if [ "$(df --output=target .. 2>/dev/null)" = "$(df --output=target $< 2>/dev/null)" ]; then \ ++ $(Q)if [ "$$(df --output=target .. 2>/dev/null)" = "$$(df --output=target $< 2>/dev/null)" ]; then \ + ln -f $< ../$(orig-name); \ + else \ + cp $< ../$(orig-name); \ +-- +2.43.0 + diff --git a/queue-6.9/kbuild-rpm-pkg-fix-build-error-with-config_modules-n.patch b/queue-6.9/kbuild-rpm-pkg-fix-build-error-with-config_modules-n.patch new file mode 100644 index 00000000000..5e37e0065af --- /dev/null +++ b/queue-6.9/kbuild-rpm-pkg-fix-build-error-with-config_modules-n.patch @@ -0,0 +1,75 @@ +From 0f4a100a256f62eadaef8e41a5f30ba0538a3cf0 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 18 Jun 2024 20:08:43 +0900 +Subject: kbuild: rpm-pkg: fix build error with CONFIG_MODULES=n + +From: Masahiro Yamada + +[ Upstream commit 8d1001f7bdd0553a796998f4fff07ee13e1c1cad ] + +When CONFIG_MODULES is disabled, 'make (bin)rpm-pkg' fails: + + $ make allnoconfig binrpm-pkg + [ snip ] + error: File not found: .../linux/rpmbuild/BUILDROOT/kernel-6.10.0_rc3-1.i386/lib/modules/6.10.0-rc3/kernel + error: File not found: .../linux/rpmbuild/BUILDROOT/kernel-6.10.0_rc3-1.i386/lib/modules/6.10.0-rc3/modules.order + +To make it work irrespective of CONFIG_MODULES, this commit specifies +the directory path, /lib/modules/%{KERNELRELEASE}, instead of individual +files. + +However, doing so would cause new warnings: + + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.alias + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.alias.bin + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.builtin.alias.bin + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.builtin.bin + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.dep + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.dep.bin + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.devname + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.softdep + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.symbols + warning: File listed twice: /lib/modules/6.10.0-rc3-dirty/modules.symbols.bin + +These files exist in /lib/modules/%{KERNELRELEASE} and are also explicitly +marked as %ghost. + +Suppress depmod because depmod-generated files are not packaged. + +Fixes: 615b3a3d2d41 ("kbuild: rpm-pkg: do not include depmod-generated files") +Signed-off-by: Masahiro Yamada +Reviewed-by: Nathan Chancellor +Signed-off-by: Sasha Levin +--- + scripts/package/kernel.spec | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec +index e095eb1e290ec..fffc8af8deb17 100644 +--- a/scripts/package/kernel.spec ++++ b/scripts/package/kernel.spec +@@ -57,7 +57,8 @@ patch -p1 < %{SOURCE2} + %install + mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE} + cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz +-%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install ++# DEPMOD=true makes depmod no-op. We do not package depmod-generated files. ++%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} DEPMOD=true modules_install + %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install + cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE} + cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config +@@ -70,10 +71,7 @@ ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEA + %endif + + { +- for x in System.map config kernel modules.builtin \ +- modules.builtin.modinfo modules.order vmlinuz; do +- echo "/lib/modules/%{KERNELRELEASE}/${x}" +- done ++ echo "/lib/modules/%{KERNELRELEASE}" + + for x in alias alias.bin builtin.alias.bin builtin.bin dep dep.bin \ + devname softdep symbols symbols.bin; do +-- +2.43.0 + diff --git a/queue-6.9/series b/queue-6.9/series index 2c963b54d7a..30580a2ff0a 100644 --- a/queue-6.9/series +++ b/queue-6.9/series @@ -124,3 +124,13 @@ mmc-sdhci-brcmstb-check-r1_status-for-erase-trim-discard.patch mmc-sdhci-pci-convert-pcibios_-return-codes-to-errnos.patch mmc-sdhci-do-not-invert-write-protect-twice.patch mmc-sdhci-do-not-lock-spinlock-around-mmc_gpio_get_ro.patch +iio-xilinx-ams-don-t-include-ams_ctrl_channels-in-sc.patch +sunrpc-fix-backchannel-reply-again.patch +counter-ti-eqep-enable-clock-at-probe.patch +kbuild-doc-update-default-install_mod_dir-from-extra.patch +kbuild-fix-build-target-deb-pkg-ln-failed-to-create-.patch +kbuild-rpm-pkg-fix-build-error-with-config_modules-n.patch +i2c-testunit-don-t-erase-registers-after-stop.patch +i2c-testunit-discard-write-requests-while-old-comman.patch +ata-libata-core-fix-null-pointer-dereference-on-erro.patch +ata-scsi-libata-core-do-not-leak-memory-for-ata_port.patch diff --git a/queue-6.9/sunrpc-fix-backchannel-reply-again.patch b/queue-6.9/sunrpc-fix-backchannel-reply-again.patch new file mode 100644 index 00000000000..ef6cb9e2242 --- /dev/null +++ b/queue-6.9/sunrpc-fix-backchannel-reply-again.patch @@ -0,0 +1,58 @@ +From eead2c9784c7d6d39f38f64035e3624c95aa0d34 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 19 Jun 2024 09:51:08 -0400 +Subject: SUNRPC: Fix backchannel reply, again + +From: Chuck Lever + +[ Upstream commit 6ddc9deacc1312762c2edd9de00ce76b00f69f7c ] + +I still see "RPC: Could not send backchannel reply error: -110" +quite often, along with slow-running tests. Debugging shows that the +backchannel is still stumbling when it has to queue a callback reply +on a busy transport. + +Note that every one of these timeouts causes a connection loss by +virtue of the xprt_conditional_disconnect() call in that arm of +call_cb_transmit_status(). + +I found that setting to_maxval is necessary to get the RPC timeout +logic to behave whenever to_exponential is not set. + +Fixes: 57331a59ac0d ("NFSv4.1: Use the nfs_client's rpc timeouts for backchannel") +Signed-off-by: Chuck Lever +Reviewed-by: Benjamin Coddington +Signed-off-by: Trond Myklebust +Signed-off-by: Sasha Levin +--- + net/sunrpc/svc.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c +index 2b4b1276d4e86..d9cda1e53a017 100644 +--- a/net/sunrpc/svc.c ++++ b/net/sunrpc/svc.c +@@ -1557,9 +1557,11 @@ void svc_process(struct svc_rqst *rqstp) + */ + void svc_process_bc(struct rpc_rqst *req, struct svc_rqst *rqstp) + { ++ struct rpc_timeout timeout = { ++ .to_increment = 0, ++ }; + struct rpc_task *task; + int proc_error; +- struct rpc_timeout timeout; + + /* Build the svc_rqst used by the common processing routine */ + rqstp->rq_xid = req->rq_xid; +@@ -1612,6 +1614,7 @@ void svc_process_bc(struct rpc_rqst *req, struct svc_rqst *rqstp) + timeout.to_initval = req->rq_xprt->timeout->to_initval; + timeout.to_retries = req->rq_xprt->timeout->to_retries; + } ++ timeout.to_maxval = timeout.to_initval; + memcpy(&req->rq_snd_buf, &rqstp->rq_res, sizeof(req->rq_snd_buf)); + task = rpc_run_bc_task(req, &timeout); + +-- +2.43.0 +