]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 6.9
authorSasha Levin <sashal@kernel.org>
Mon, 1 Jul 2024 13:16:30 +0000 (09:16 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 1 Jul 2024 13:16:30 +0000 (09:16 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-6.9/ata-libata-core-fix-null-pointer-dereference-on-erro.patch [new file with mode: 0644]
queue-6.9/ata-scsi-libata-core-do-not-leak-memory-for-ata_port.patch [new file with mode: 0644]
queue-6.9/counter-ti-eqep-enable-clock-at-probe.patch [new file with mode: 0644]
queue-6.9/i2c-testunit-discard-write-requests-while-old-comman.patch [new file with mode: 0644]
queue-6.9/i2c-testunit-don-t-erase-registers-after-stop.patch [new file with mode: 0644]
queue-6.9/iio-xilinx-ams-don-t-include-ams_ctrl_channels-in-sc.patch [new file with mode: 0644]
queue-6.9/kbuild-doc-update-default-install_mod_dir-from-extra.patch [new file with mode: 0644]
queue-6.9/kbuild-fix-build-target-deb-pkg-ln-failed-to-create-.patch [new file with mode: 0644]
queue-6.9/kbuild-rpm-pkg-fix-build-error-with-config_modules-n.patch [new file with mode: 0644]
queue-6.9/series
queue-6.9/sunrpc-fix-backchannel-reply-again.patch [new file with mode: 0644]

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 (file)
index 0000000..0c4294d
--- /dev/null
@@ -0,0 +1,78 @@
+From bc42ccece9919d4723db19d584749ad9bff6872b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 29 Jun 2024 14:42:11 +0200
+Subject: ata: libata-core: Fix null pointer dereference on error
+
+From: Niklas Cassel <cassel@kernel.org>
+
+[ 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:
+ <TASK>
+ ? __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 <dlemoal@kernel.org>
+Reviewed-by: Hannes Reinecke <hare@suse.de>
+Reviewed-by: John Garry <john.g.garry@oracle.com>
+Link: https://lore.kernel.org/r/20240629124210.181537-7-cassel@kernel.org
+Signed-off-by: Niklas Cassel <cassel@kernel.org>
+Stable-dep-of: f6549f538fe0 ("ata,scsi: libata-core: Do not leak memory for ata_port struct members")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 (file)
index 0000000..f581ae5
--- /dev/null
@@ -0,0 +1,129 @@
+From 842ea4a0a8ea44e2009bbe170f5d727280298b34 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <cassel@kernel.org>
+
+[ 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 <john.g.garry@oracle.com>
+Link: https://lore.kernel.org/r/20240629124210.181537-8-cassel@kernel.org
+Signed-off-by: Niklas Cassel <cassel@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 (file)
index 0000000..bee8830
--- /dev/null
@@ -0,0 +1,59 @@
+From 38ceee1bf14dd03b957879cb71c089977af25c6e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 21 Jun 2024 17:22:40 -0500
+Subject: counter: ti-eqep: enable clock at probe
+
+From: David Lechner <dlechner@baylibre.com>
+
+[ 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 <jm@ti.com>
+Signed-off-by: David Lechner <dlechner@baylibre.com>
+Link: https://lore.kernel.org/r/20240621-ti-eqep-enable-clock-v2-1-edd3421b54d4@baylibre.com
+Signed-off-by: William Breathitt Gray <wbg@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 <linux/bitops.h>
++#include <linux/clk.h>
+ #include <linux/counter.h>
+ #include <linux/kernel.h>
+ #include <linux/mod_devicetable.h>
+@@ -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 (file)
index 0000000..ae24f9b
--- /dev/null
@@ -0,0 +1,38 @@
+From b5f09ec3eb570e8c24f8380e0187c6ba0ec890d4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 27 Jun 2024 13:14:48 +0200
+Subject: i2c: testunit: discard write requests while old command is running
+
+From: Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+[ 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 <wsa+renesas@sang-engineering.com>
+Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 (file)
index 0000000..982011e
--- /dev/null
@@ -0,0 +1,38 @@
+From d8a3eb46e994db58f8df80438a3b9a29ee5dafd2 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 27 Jun 2024 13:14:47 +0200
+Subject: i2c: testunit: don't erase registers after STOP
+
+From: Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+[ 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 <wsa+renesas@sang-engineering.com>
+Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 (file)
index 0000000..e4da21e
--- /dev/null
@@ -0,0 +1,46 @@
+From 85b1b1ec2bd1ed6eccc8ffa14888b5139123b0be Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <sean.anderson@linux.dev>
+
+[ 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 <sean.anderson@linux.dev>
+Link: https://lore.kernel.org/r/20240311162800.11074-1-sean.anderson@linux.dev
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 (file)
index 0000000..5908470
--- /dev/null
@@ -0,0 +1,62 @@
+From 71c992176ffa74b010035befe9881ca8e6bdb0a9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <mark-pk.tsai@mediatek.com>
+
+[ 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 <mark-pk.tsai@mediatek.com>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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/<kernel_release>/extra/, but a prefix may
++              /lib/modules/<kernel_release>/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 (file)
index 0000000..a2c08f6
--- /dev/null
@@ -0,0 +1,41 @@
+From fd9ac84fcd1e86539d106533b8f0520d34855bd3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+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 <thayne@mastodonlabs.com>
+
+[ 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 <thayne@mastodonlabs.com>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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 (file)
index 0000000..5e37e00
--- /dev/null
@@ -0,0 +1,75 @@
+From 0f4a100a256f62eadaef8e41a5f30ba0538a3cf0 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 18 Jun 2024 20:08:43 +0900
+Subject: kbuild: rpm-pkg: fix build error with CONFIG_MODULES=n
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+[ 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 <masahiroy@kernel.org>
+Reviewed-by: Nathan Chancellor <nathan@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+
index 2c963b54d7ab04123b0730075c9b7703dbddd217..30580a2ff0a817ccfdf87ab3fa62f85debc6335f 100644 (file)
@@ -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 (file)
index 0000000..ef6cb9e
--- /dev/null
@@ -0,0 +1,58 @@
+From eead2c9784c7d6d39f38f64035e3624c95aa0d34 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 19 Jun 2024 09:51:08 -0400
+Subject: SUNRPC: Fix backchannel reply, again
+
+From: Chuck Lever <chuck.lever@oracle.com>
+
+[ 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 <chuck.lever@oracle.com>
+Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
+Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+