]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.19
authorSasha Levin <sashal@kernel.org>
Tue, 3 Dec 2024 12:33:32 +0000 (07:33 -0500)
committerSasha Levin <sashal@kernel.org>
Tue, 3 Dec 2024 12:33:32 +0000 (07:33 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
13 files changed:
queue-4.19/9p-xen-fix-init-sequence.patch [new file with mode: 0644]
queue-4.19/9p-xen-fix-release-of-irq.patch [new file with mode: 0644]
queue-4.19/block-return-unsigned-int-from-bdev_io_min.patch [new file with mode: 0644]
queue-4.19/jffs2-fix-use-of-uninitialized-variable.patch [new file with mode: 0644]
queue-4.19/modpost-remove-incorrect-code-in-do_eisa_entry.patch [new file with mode: 0644]
queue-4.19/nfsv4.0-fix-a-use-after-free-problem-in-the-asynchro.patch [new file with mode: 0644]
queue-4.19/rtc-check-if-__rtc_read_time-was-successful-in-rtc_t.patch [new file with mode: 0644]
queue-4.19/rtc-st-lpc-use-irqf_no_autoen-flag-in-request_irq.patch [new file with mode: 0644]
queue-4.19/series
queue-4.19/sh-intc-fix-use-after-free-bug-in-register_intc_cont.patch [new file with mode: 0644]
queue-4.19/ubi-fastmap-fix-duplicate-slab-cache-names-while-att.patch [new file with mode: 0644]
queue-4.19/ubifs-correct-the-total-block-count-by-deducting-jou.patch [new file with mode: 0644]
queue-4.19/um-fix-the-return-value-of-elf_core_copy_task_fpregs.patch [new file with mode: 0644]

diff --git a/queue-4.19/9p-xen-fix-init-sequence.patch b/queue-4.19/9p-xen-fix-init-sequence.patch
new file mode 100644 (file)
index 0000000..5350dd6
--- /dev/null
@@ -0,0 +1,56 @@
+From 23f0263da16a8a6c52ad0d58d6babd3f49a79229 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 19 Nov 2024 21:16:33 +0000
+Subject: 9p/xen: fix init sequence
+
+From: Alex Zenla <alex@edera.dev>
+
+[ Upstream commit 7ef3ae82a6ebbf4750967d1ce43bcdb7e44ff74b ]
+
+Large amount of mount hangs observed during hotplugging of 9pfs devices. The
+9pfs Xen driver attempts to initialize itself more than once, causing the
+frontend and backend to disagree: the backend listens on a channel that the
+frontend does not send on, resulting in stalled processing.
+
+Only allow initialization of 9p frontend once.
+
+Fixes: c15fe55d14b3b ("9p/xen: fix connection sequence")
+Signed-off-by: Alex Zenla <alex@edera.dev>
+Signed-off-by: Alexander Merritt <alexander@edera.dev>
+Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
+Reviewed-by: Juergen Gross <jgross@suse.com>
+Message-ID: <20241119211633.38321-1-alexander@edera.dev>
+Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/9p/trans_xen.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/net/9p/trans_xen.c b/net/9p/trans_xen.c
+index c87146a496363..77d7e6c3d7a27 100644
+--- a/net/9p/trans_xen.c
++++ b/net/9p/trans_xen.c
+@@ -480,6 +480,7 @@ static int xen_9pfs_front_init(struct xenbus_device *dev)
+               goto error;
+       }
++      xenbus_switch_state(dev, XenbusStateInitialised);
+       return 0;
+  error_xenbus:
+@@ -527,8 +528,10 @@ static void xen_9pfs_front_changed(struct xenbus_device *dev,
+               break;
+       case XenbusStateInitWait:
+-              if (!xen_9pfs_front_init(dev))
+-                      xenbus_switch_state(dev, XenbusStateInitialised);
++              if (dev->state != XenbusStateInitialising)
++                      break;
++
++              xen_9pfs_front_init(dev);
+               break;
+       case XenbusStateConnected:
+-- 
+2.43.0
+
diff --git a/queue-4.19/9p-xen-fix-release-of-irq.patch b/queue-4.19/9p-xen-fix-release-of-irq.patch
new file mode 100644 (file)
index 0000000..3b16585
--- /dev/null
@@ -0,0 +1,42 @@
+From 458acabf07120c16f3b37fc47aced20ba1587ae2 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 21 Nov 2024 22:51:00 +0000
+Subject: 9p/xen: fix release of IRQ
+
+From: Alex Zenla <alex@edera.dev>
+
+[ Upstream commit e43c608f40c065b30964f0a806348062991b802d ]
+
+Kernel logs indicate an IRQ was double-freed.
+
+Pass correct device ID during IRQ release.
+
+Fixes: 71ebd71921e45 ("xen/9pfs: connect to the backend")
+Signed-off-by: Alex Zenla <alex@edera.dev>
+Signed-off-by: Alexander Merritt <alexander@edera.dev>
+Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
+Reviewed-by: Juergen Gross <jgross@suse.com>
+Message-ID: <20241121225100.5736-1-alexander@edera.dev>
+[Dominique: remove confusing variable reset to 0]
+Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/9p/trans_xen.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/9p/trans_xen.c b/net/9p/trans_xen.c
+index 77d7e6c3d7a27..33d8814daa888 100644
+--- a/net/9p/trans_xen.c
++++ b/net/9p/trans_xen.c
+@@ -306,7 +306,7 @@ static void xen_9pfs_front_free(struct xen_9pfs_front_priv *priv)
+               if (!priv->rings[i].intf)
+                       break;
+               if (priv->rings[i].irq > 0)
+-                      unbind_from_irqhandler(priv->rings[i].irq, priv->dev);
++                      unbind_from_irqhandler(priv->rings[i].irq, ring);
+               if (priv->rings[i].data.in) {
+                       for (j = 0; j < (1 << XEN_9PFS_RING_ORDER); j++) {
+                               grant_ref_t ref;
+-- 
+2.43.0
+
diff --git a/queue-4.19/block-return-unsigned-int-from-bdev_io_min.patch b/queue-4.19/block-return-unsigned-int-from-bdev_io_min.patch
new file mode 100644 (file)
index 0000000..2e9bfc8
--- /dev/null
@@ -0,0 +1,39 @@
+From e23deb36c1079dcb03f142e1218087480c7de50c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 19 Nov 2024 08:26:02 +0100
+Subject: block: return unsigned int from bdev_io_min
+
+From: Christoph Hellwig <hch@lst.de>
+
+[ Upstream commit 46fd48ab3ea3eb3bb215684bd66ea3d260b091a9 ]
+
+The underlying limit is defined as an unsigned int, so return that from
+bdev_io_min as well.
+
+Fixes: ac481c20ef8f ("block: Topology ioctls")
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
+Reviewed-by: John Garry <john.g.garry@oracle.com>
+Link: https://lore.kernel.org/r/20241119072602.1059488-1-hch@lst.de
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/linux/blkdev.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
+index d76682d2f9dc4..bff57cb20e53c 100644
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -1513,7 +1513,7 @@ static inline unsigned int queue_io_min(struct request_queue *q)
+       return q->limits.io_min;
+ }
+-static inline int bdev_io_min(struct block_device *bdev)
++static inline unsigned int bdev_io_min(struct block_device *bdev)
+ {
+       return queue_io_min(bdev_get_queue(bdev));
+ }
+-- 
+2.43.0
+
diff --git a/queue-4.19/jffs2-fix-use-of-uninitialized-variable.patch b/queue-4.19/jffs2-fix-use-of-uninitialized-variable.patch
new file mode 100644 (file)
index 0000000..4bbb7c9
--- /dev/null
@@ -0,0 +1,57 @@
+From 6cadc223615169b6dce5a4c878f24cbd94ebd02e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 1 Jul 2024 12:52:05 +0800
+Subject: jffs2: fix use of uninitialized variable
+
+From: Qingfang Deng <qingfang.deng@siflower.com.cn>
+
+[ Upstream commit 3ba44ee966bc3c41dd8a944f963466c8fcc60dc8 ]
+
+When building the kernel with -Wmaybe-uninitialized, the compiler
+reports this warning:
+
+In function 'jffs2_mark_erased_block',
+    inlined from 'jffs2_erase_pending_blocks' at fs/jffs2/erase.c:116:4:
+fs/jffs2/erase.c:474:9: warning: 'bad_offset' may be used uninitialized [-Wmaybe-uninitialized]
+  474 |         jffs2_erase_failed(c, jeb, bad_offset);
+      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+fs/jffs2/erase.c: In function 'jffs2_erase_pending_blocks':
+fs/jffs2/erase.c:402:18: note: 'bad_offset' was declared here
+  402 |         uint32_t bad_offset;
+      |                  ^~~~~~~~~~
+
+When mtd->point() is used, jffs2_erase_pending_blocks can return -EIO
+without initializing bad_offset, which is later used at the filebad
+label in jffs2_mark_erased_block.
+Fix it by initializing this variable.
+
+Fixes: 8a0f572397ca ("[JFFS2] Return values of jffs2_block_check_erase error paths")
+Signed-off-by: Qingfang Deng <qingfang.deng@siflower.com.cn>
+Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
+Signed-off-by: Richard Weinberger <richard@nod.at>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/jffs2/erase.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
+index 7e9abdb897122..5fbaf6ab9f482 100644
+--- a/fs/jffs2/erase.c
++++ b/fs/jffs2/erase.c
+@@ -340,10 +340,9 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl
+               } while(--retlen);
+               mtd_unpoint(c->mtd, jeb->offset, c->sector_size);
+               if (retlen) {
+-                      pr_warn("Newly-erased block contained word 0x%lx at offset 0x%08tx\n",
+-                              *wordebuf,
+-                              jeb->offset +
+-                              c->sector_size-retlen * sizeof(*wordebuf));
++                      *bad_offset = jeb->offset + c->sector_size - retlen * sizeof(*wordebuf);
++                      pr_warn("Newly-erased block contained word 0x%lx at offset 0x%08x\n",
++                              *wordebuf, *bad_offset);
+                       return -EIO;
+               }
+               return 0;
+-- 
+2.43.0
+
diff --git a/queue-4.19/modpost-remove-incorrect-code-in-do_eisa_entry.patch b/queue-4.19/modpost-remove-incorrect-code-in-do_eisa_entry.patch
new file mode 100644 (file)
index 0000000..b465aca
--- /dev/null
@@ -0,0 +1,86 @@
+From a149f0d1608cb7b673a56fa8239cad6d4ffb3ba7 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 20 Nov 2024 08:56:39 +0900
+Subject: modpost: remove incorrect code in do_eisa_entry()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+[ Upstream commit 0c3e091319e4748cb36ac9a50848903dc6f54054 ]
+
+This function contains multiple bugs after the following commits:
+
+ - ac551828993e ("modpost: i2c aliases need no trailing wildcard")
+ - 6543becf26ff ("mod/file2alias: make modalias generation safe for cross compiling")
+
+Commit ac551828993e inserted the following code to do_eisa_entry():
+
+    else
+            strcat(alias, "*");
+
+This is incorrect because 'alias' is uninitialized. If it is not
+NULL-terminated, strcat() could cause a buffer overrun.
+
+Even if 'alias' happens to be zero-filled, it would output:
+
+    MODULE_ALIAS("*");
+
+This would match anything. As a result, the module could be loaded by
+any unrelated uevent from an unrelated subsystem.
+
+Commit ac551828993e introduced another bug.            
+
+Prior to that commit, the conditional check was:
+
+    if (eisa->sig[0])
+
+This checked if the first character of eisa_device_id::sig was not '\0'.
+
+However, commit ac551828993e changed it as follows:
+
+    if (sig[0])
+
+sig[0] is NOT the first character of the eisa_device_id::sig. The
+type of 'sig' is 'char (*)[8]', meaning that the type of 'sig[0]' is
+'char [8]' instead of 'char'. 'sig[0]' and 'symval' refer to the same
+address, which never becomes NULL.
+
+The correct conversion would have been:
+
+    if ((*sig)[0])
+
+However, this if-conditional was meaningless because the earlier change
+in commit ac551828993e was incorrect.
+
+This commit removes the entire incorrect code, which should never have
+been executed.
+
+Fixes: ac551828993e ("modpost: i2c aliases need no trailing wildcard")
+Fixes: 6543becf26ff ("mod/file2alias: make modalias generation safe for cross compiling")
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ scripts/mod/file2alias.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
+index 90868df7865e3..adcaabf408949 100644
+--- a/scripts/mod/file2alias.c
++++ b/scripts/mod/file2alias.c
+@@ -763,10 +763,7 @@ static int do_eisa_entry(const char *filename, void *symval,
+               char *alias)
+ {
+       DEF_FIELD_ADDR(symval, eisa_device_id, sig);
+-      if (sig[0])
+-              sprintf(alias, EISA_DEVICE_MODALIAS_FMT "*", *sig);
+-      else
+-              strcat(alias, "*");
++      sprintf(alias, EISA_DEVICE_MODALIAS_FMT "*", *sig);
+       return 1;
+ }
+-- 
+2.43.0
+
diff --git a/queue-4.19/nfsv4.0-fix-a-use-after-free-problem-in-the-asynchro.patch b/queue-4.19/nfsv4.0-fix-a-use-after-free-problem-in-the-asynchro.patch
new file mode 100644 (file)
index 0000000..ffd5109
--- /dev/null
@@ -0,0 +1,52 @@
+From df09e43392bb0329db258d74e37bf9b48ece3b82 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 8 Nov 2024 12:13:31 -0500
+Subject: NFSv4.0: Fix a use-after-free problem in the asynchronous open()
+
+From: Trond Myklebust <trond.myklebust@hammerspace.com>
+
+[ Upstream commit 2fdb05dc0931250574f0cb0ebeb5ed8e20f4a889 ]
+
+Yang Erkun reports that when two threads are opening files at the same
+time, and are forced to abort before a reply is seen, then the call to
+nfs_release_seqid() in nfs4_opendata_free() can result in a
+use-after-free of the pointer to the defunct rpc task of the other
+thread.
+The fix is to ensure that if the RPC call is aborted before the call to
+nfs_wait_on_sequence() is complete, then we must call nfs_release_seqid()
+in nfs4_open_release() before the rpc_task is freed.
+
+Reported-by: Yang Erkun <yangerkun@huawei.com>
+Fixes: 24ac23ab88df ("NFSv4: Convert open() into an asynchronous RPC call")
+Reviewed-by: Yang Erkun <yangerkun@huawei.com>
+Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/nfs/nfs4proc.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
+index c9db9a0fc7337..66db81a90ceee 100644
+--- a/fs/nfs/nfs4proc.c
++++ b/fs/nfs/nfs4proc.c
+@@ -2379,12 +2379,14 @@ static void nfs4_open_release(void *calldata)
+       struct nfs4_opendata *data = calldata;
+       struct nfs4_state *state = NULL;
++      /* In case of error, no cleanup! */
++      if (data->rpc_status != 0 || !data->rpc_done) {
++              nfs_release_seqid(data->o_arg.seqid);
++              goto out_free;
++      }
+       /* If this request hasn't been cancelled, do nothing */
+       if (!data->cancelled)
+               goto out_free;
+-      /* In case of error, no cleanup! */
+-      if (data->rpc_status != 0 || !data->rpc_done)
+-              goto out_free;
+       /* In case we need an open_confirm, no cleanup! */
+       if (data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM)
+               goto out_free;
+-- 
+2.43.0
+
diff --git a/queue-4.19/rtc-check-if-__rtc_read_time-was-successful-in-rtc_t.patch b/queue-4.19/rtc-check-if-__rtc_read_time-was-successful-in-rtc_t.patch
new file mode 100644 (file)
index 0000000..a8f96d9
--- /dev/null
@@ -0,0 +1,53 @@
+From 98c5bfcd1e9403634250214c0434edb4afc1ebf9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 11 Oct 2024 12:31:53 +0800
+Subject: rtc: check if __rtc_read_time was successful in rtc_timer_do_work()
+
+From: Yongliang Gao <leonylgao@tencent.com>
+
+[ Upstream commit e8ba8a2bc4f60a1065f23d6a0e7cbea945a0f40d ]
+
+If the __rtc_read_time call fails,, the struct rtc_time tm; may contain
+uninitialized data, or an illegal date/time read from the RTC hardware.
+
+When calling rtc_tm_to_ktime later, the result may be a very large value
+(possibly KTIME_MAX). If there are periodic timers in rtc->timerqueue,
+they will continually expire, may causing kernel softlockup.
+
+Fixes: 6610e0893b8b ("RTC: Rework RTC code to use timerqueue for events")
+Signed-off-by: Yongliang Gao <leonylgao@tencent.com>
+Acked-by: Jingqun Li <jingqunli@tencent.com>
+Link: https://lore.kernel.org/r/20241011043153.3788112-1-leonylgao@gmail.com
+Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/rtc/interface.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
+index ce051f91829f9..1ab619fb978a4 100644
+--- a/drivers/rtc/interface.c
++++ b/drivers/rtc/interface.c
+@@ -914,13 +914,18 @@ void rtc_timer_do_work(struct work_struct *work)
+       struct timerqueue_node *next;
+       ktime_t now;
+       struct rtc_time tm;
++      int err;
+       struct rtc_device *rtc =
+               container_of(work, struct rtc_device, irqwork);
+       mutex_lock(&rtc->ops_lock);
+ again:
+-      __rtc_read_time(rtc, &tm);
++      err = __rtc_read_time(rtc, &tm);
++      if (err) {
++              mutex_unlock(&rtc->ops_lock);
++              return;
++      }
+       now = rtc_tm_to_ktime(tm);
+       while ((next = timerqueue_getnext(&rtc->timerqueue))) {
+               if (next->expires > now)
+-- 
+2.43.0
+
diff --git a/queue-4.19/rtc-st-lpc-use-irqf_no_autoen-flag-in-request_irq.patch b/queue-4.19/rtc-st-lpc-use-irqf_no_autoen-flag-in-request_irq.patch
new file mode 100644 (file)
index 0000000..5c19fa7
--- /dev/null
@@ -0,0 +1,50 @@
+From 8dccb3f2186ba30166f778f8dd0a0ed46a16ff51 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 12 Sep 2024 11:37:27 +0800
+Subject: rtc: st-lpc: Use IRQF_NO_AUTOEN flag in request_irq()
+
+From: Jinjie Ruan <ruanjinjie@huawei.com>
+
+[ Upstream commit b6cd7adec0cf03f0aefc55676e71dd721cbc71a8 ]
+
+If request_irq() fails in st_rtc_probe(), there is no need to enable
+the irq, and if it succeeds, disable_irq() after request_irq() still has
+a time gap in which interrupts can come.
+
+request_irq() with IRQF_NO_AUTOEN flag will disable IRQ auto-enable when
+request IRQ.
+
+Fixes: b5b2bdfc2893 ("rtc: st: Add new driver for ST's LPC RTC")
+Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
+Link: https://lore.kernel.org/r/20240912033727.3013951-1-ruanjinjie@huawei.com
+Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/rtc/rtc-st-lpc.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/rtc/rtc-st-lpc.c b/drivers/rtc/rtc-st-lpc.c
+index e8a8ca3545f00..c3ad10e34ad05 100644
+--- a/drivers/rtc/rtc-st-lpc.c
++++ b/drivers/rtc/rtc-st-lpc.c
+@@ -229,15 +229,14 @@ static int st_rtc_probe(struct platform_device *pdev)
+               return -EINVAL;
+       }
+-      ret = devm_request_irq(&pdev->dev, rtc->irq, st_rtc_handler, 0,
+-                             pdev->name, rtc);
++      ret = devm_request_irq(&pdev->dev, rtc->irq, st_rtc_handler,
++                             IRQF_NO_AUTOEN, pdev->name, rtc);
+       if (ret) {
+               dev_err(&pdev->dev, "Failed to request irq %i\n", rtc->irq);
+               return ret;
+       }
+       enable_irq_wake(rtc->irq);
+-      disable_irq(rtc->irq);
+       rtc->clk = devm_clk_get(&pdev->dev, NULL);
+       if (IS_ERR(rtc->clk)) {
+-- 
+2.43.0
+
index ec7946f1b8bdf1a99bc7635d367f8ee35135746f..02b05fc239d83e308941d6eaa0c91f81216c14c2 100644 (file)
@@ -123,3 +123,15 @@ media-wl128x-fix-atomicity-violation-in-fmc_send_cmd.patch
 usb-dwc3-gadget-fix-checking-for-number-of-trbs-left.patch
 lib-string_helpers-silence-snprintf-output-truncation-warning.patch
 nfsd-prevent-a-potential-integer-overflow.patch
+um-fix-the-return-value-of-elf_core_copy_task_fpregs.patch
+nfsv4.0-fix-a-use-after-free-problem-in-the-asynchro.patch
+rtc-st-lpc-use-irqf_no_autoen-flag-in-request_irq.patch
+rtc-check-if-__rtc_read_time-was-successful-in-rtc_t.patch
+ubifs-correct-the-total-block-count-by-deducting-jou.patch
+ubi-fastmap-fix-duplicate-slab-cache-names-while-att.patch
+jffs2-fix-use-of-uninitialized-variable.patch
+block-return-unsigned-int-from-bdev_io_min.patch
+9p-xen-fix-init-sequence.patch
+9p-xen-fix-release-of-irq.patch
+modpost-remove-incorrect-code-in-do_eisa_entry.patch
+sh-intc-fix-use-after-free-bug-in-register_intc_cont.patch
diff --git a/queue-4.19/sh-intc-fix-use-after-free-bug-in-register_intc_cont.patch b/queue-4.19/sh-intc-fix-use-after-free-bug-in-register_intc_cont.patch
new file mode 100644 (file)
index 0000000..d211f25
--- /dev/null
@@ -0,0 +1,46 @@
+From 8572dbc31ddd38d912fd4ea177e0287283d7df12 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 23 Oct 2024 11:41:59 +0300
+Subject: sh: intc: Fix use-after-free bug in register_intc_controller()
+
+From: Dan Carpenter <dan.carpenter@linaro.org>
+
+[ Upstream commit 63e72e551942642c48456a4134975136cdcb9b3c ]
+
+In the error handling for this function, d is freed without ever
+removing it from intc_list which would lead to a use after free.
+To fix this, let's only add it to the list after everything has
+succeeded.
+
+Fixes: 2dcec7a988a1 ("sh: intc: set_irq_wake() support")
+Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
+Reviewed-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Signed-off-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/sh/intc/core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
+index 46f0f322d4d8f..48fe5fab5693d 100644
+--- a/drivers/sh/intc/core.c
++++ b/drivers/sh/intc/core.c
+@@ -194,7 +194,6 @@ int __init register_intc_controller(struct intc_desc *desc)
+               goto err0;
+       INIT_LIST_HEAD(&d->list);
+-      list_add_tail(&d->list, &intc_list);
+       raw_spin_lock_init(&d->lock);
+       INIT_RADIX_TREE(&d->tree, GFP_ATOMIC);
+@@ -380,6 +379,7 @@ int __init register_intc_controller(struct intc_desc *desc)
+       d->skip_suspend = desc->skip_syscore_suspend;
++      list_add_tail(&d->list, &intc_list);
+       nr_intc_controllers++;
+       return 0;
+-- 
+2.43.0
+
diff --git a/queue-4.19/ubi-fastmap-fix-duplicate-slab-cache-names-while-att.patch b/queue-4.19/ubi-fastmap-fix-duplicate-slab-cache-names-while-att.patch
new file mode 100644 (file)
index 0000000..3e5b792
--- /dev/null
@@ -0,0 +1,104 @@
+From 8189f7d41a16f9682145af69e9f1e076abf2c604 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 11 Oct 2024 12:50:02 +0800
+Subject: ubi: fastmap: Fix duplicate slab cache names while attaching
+
+From: Zhihao Cheng <chengzhihao1@huawei.com>
+
+[ Upstream commit bcddf52b7a17adcebc768d26f4e27cf79adb424c ]
+
+Since commit 4c39529663b9 ("slab: Warn on duplicate cache names when
+DEBUG_VM=y"), the duplicate slab cache names can be detected and a
+kernel WARNING is thrown out.
+In UBI fast attaching process, alloc_ai() could be invoked twice
+with the same slab cache name 'ubi_aeb_slab_cache', which will trigger
+following warning messages:
+ kmem_cache of name 'ubi_aeb_slab_cache' already exists
+ WARNING: CPU: 0 PID: 7519 at mm/slab_common.c:107
+          __kmem_cache_create_args+0x100/0x5f0
+ Modules linked in: ubi(+) nandsim [last unloaded: nandsim]
+ CPU: 0 UID: 0 PID: 7519 Comm: modprobe Tainted: G 6.12.0-rc2
+ RIP: 0010:__kmem_cache_create_args+0x100/0x5f0
+ Call Trace:
+   __kmem_cache_create_args+0x100/0x5f0
+   alloc_ai+0x295/0x3f0 [ubi]
+   ubi_attach+0x3c3/0xcc0 [ubi]
+   ubi_attach_mtd_dev+0x17cf/0x3fa0 [ubi]
+   ubi_init+0x3fb/0x800 [ubi]
+   do_init_module+0x265/0x7d0
+   __x64_sys_finit_module+0x7a/0xc0
+
+The problem could be easily reproduced by loading UBI device by fastmap
+with CONFIG_DEBUG_VM=y.
+Fix it by using different slab names for alloc_ai() callers.
+
+Fixes: d2158f69a7d4 ("UBI: Remove alloc_ai() slab name from parameter list")
+Fixes: fdf10ed710c0 ("ubi: Rework Fastmap attach base code")
+Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
+Signed-off-by: Richard Weinberger <richard@nod.at>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/mtd/ubi/attach.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/mtd/ubi/attach.c b/drivers/mtd/ubi/attach.c
+index 93ceea4f27d57..d62e5b69ba4b2 100644
+--- a/drivers/mtd/ubi/attach.c
++++ b/drivers/mtd/ubi/attach.c
+@@ -1459,7 +1459,7 @@ static int scan_all(struct ubi_device *ubi, struct ubi_attach_info *ai,
+       return err;
+ }
+-static struct ubi_attach_info *alloc_ai(void)
++static struct ubi_attach_info *alloc_ai(const char *slab_name)
+ {
+       struct ubi_attach_info *ai;
+@@ -1473,7 +1473,7 @@ static struct ubi_attach_info *alloc_ai(void)
+       INIT_LIST_HEAD(&ai->alien);
+       INIT_LIST_HEAD(&ai->fastmap);
+       ai->volumes = RB_ROOT;
+-      ai->aeb_slab_cache = kmem_cache_create("ubi_aeb_slab_cache",
++      ai->aeb_slab_cache = kmem_cache_create(slab_name,
+                                              sizeof(struct ubi_ainf_peb),
+                                              0, 0, NULL);
+       if (!ai->aeb_slab_cache) {
+@@ -1503,7 +1503,7 @@ static int scan_fast(struct ubi_device *ubi, struct ubi_attach_info **ai)
+       err = -ENOMEM;
+-      scan_ai = alloc_ai();
++      scan_ai = alloc_ai("ubi_aeb_slab_cache_fastmap");
+       if (!scan_ai)
+               goto out;
+@@ -1569,7 +1569,7 @@ int ubi_attach(struct ubi_device *ubi, int force_scan)
+       int err;
+       struct ubi_attach_info *ai;
+-      ai = alloc_ai();
++      ai = alloc_ai("ubi_aeb_slab_cache");
+       if (!ai)
+               return -ENOMEM;
+@@ -1587,7 +1587,7 @@ int ubi_attach(struct ubi_device *ubi, int force_scan)
+               if (err > 0 || mtd_is_eccerr(err)) {
+                       if (err != UBI_NO_FASTMAP) {
+                               destroy_ai(ai);
+-                              ai = alloc_ai();
++                              ai = alloc_ai("ubi_aeb_slab_cache");
+                               if (!ai)
+                                       return -ENOMEM;
+@@ -1626,7 +1626,7 @@ int ubi_attach(struct ubi_device *ubi, int force_scan)
+       if (ubi->fm && ubi_dbg_chk_fastmap(ubi)) {
+               struct ubi_attach_info *scan_ai;
+-              scan_ai = alloc_ai();
++              scan_ai = alloc_ai("ubi_aeb_slab_cache_dbg_chk_fastmap");
+               if (!scan_ai) {
+                       err = -ENOMEM;
+                       goto out_wl;
+-- 
+2.43.0
+
diff --git a/queue-4.19/ubifs-correct-the-total-block-count-by-deducting-jou.patch b/queue-4.19/ubifs-correct-the-total-block-count-by-deducting-jou.patch
new file mode 100644 (file)
index 0000000..ab355c3
--- /dev/null
@@ -0,0 +1,46 @@
+From dc2a2f532e851d2b2300f0d20b6a87c506a042f2 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 5 Sep 2024 09:09:09 +0800
+Subject: ubifs: Correct the total block count by deducting journal reservation
+
+From: Zhihao Cheng <chengzhihao1@huawei.com>
+
+[ Upstream commit 84a2bee9c49769310efa19601157ef50a1df1267 ]
+
+Since commit e874dcde1cbf ("ubifs: Reserve one leb for each journal
+head while doing budget"), available space is calulated by deducting
+reservation for all journal heads. However, the total block count (
+which is only used by statfs) is not updated yet, which will cause
+the wrong displaying for used space(total - available).
+Fix it by deducting reservation for all journal heads from total
+block count.
+
+Fixes: e874dcde1cbf ("ubifs: Reserve one leb for each journal head while doing budget")
+Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
+Signed-off-by: Richard Weinberger <richard@nod.at>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/ubifs/super.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
+index f5b663d70826c..1d548f86a41d3 100644
+--- a/fs/ubifs/super.c
++++ b/fs/ubifs/super.c
+@@ -755,10 +755,10 @@ static void init_constants_master(struct ubifs_info *c)
+        * necessary to report something for the 'statfs()' call.
+        *
+        * Subtract the LEB reserved for GC, the LEB which is reserved for
+-       * deletions, minimum LEBs for the index, and assume only one journal
+-       * head is available.
++       * deletions, minimum LEBs for the index, the LEBs which are reserved
++       * for each journal head.
+        */
+-      tmp64 = c->main_lebs - 1 - 1 - MIN_INDEX_LEBS - c->jhead_cnt + 1;
++      tmp64 = c->main_lebs - 1 - 1 - MIN_INDEX_LEBS - c->jhead_cnt;
+       tmp64 *= (long long)c->leb_size - c->leb_overhead;
+       tmp64 = ubifs_reported_space(c, tmp64);
+       c->block_cnt = tmp64 >> UBIFS_BLOCK_SHIFT;
+-- 
+2.43.0
+
diff --git a/queue-4.19/um-fix-the-return-value-of-elf_core_copy_task_fpregs.patch b/queue-4.19/um-fix-the-return-value-of-elf_core_copy_task_fpregs.patch
new file mode 100644 (file)
index 0000000..a750f83
--- /dev/null
@@ -0,0 +1,36 @@
+From 6bb8c27df7c80696891df62b13014024ce592b5d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 13 Sep 2024 10:33:02 +0800
+Subject: um: Fix the return value of elf_core_copy_task_fpregs
+
+From: Tiwei Bie <tiwei.btw@antgroup.com>
+
+[ Upstream commit 865e3845eeaa21e9a62abc1361644e67124f1ec0 ]
+
+This function is expected to return a boolean value, which should be
+true on success and false on failure.
+
+Fixes: d1254b12c93e ("uml: fix x86_64 core dump crash")
+Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com>
+Link: https://patch.msgid.link/20240913023302.130300-1-tiwei.btw@antgroup.com
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/um/kernel/process.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
+index c9d09d04d19df..83ae59f748e1f 100644
+--- a/arch/um/kernel/process.c
++++ b/arch/um/kernel/process.c
+@@ -396,6 +396,6 @@ int elf_core_copy_fpregs(struct task_struct *t, elf_fpregset_t *fpu)
+ {
+       int cpu = current_thread_info()->cpu;
+-      return save_i387_registers(userspace_pid[cpu], (unsigned long *) fpu);
++      return save_i387_registers(userspace_pid[cpu], (unsigned long *) fpu) == 0;
+ }
+-- 
+2.43.0
+