From: Greg Kroah-Hartman Date: Wed, 2 Oct 2024 10:14:53 +0000 (+0200) Subject: 5.4-stable patches X-Git-Tag: v6.6.54~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=742d71b9751d22b12f01971282f47178d78a0d7c;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: i2c-aspeed-update-the-stop-sw-state-when-the-bus-recovery-occurs.patch i2c-isch-add-missed-else.patch mm-only-enforce-minimum-stack-gap-size-if-it-s-sensible.patch --- diff --git a/queue-5.4/i2c-aspeed-update-the-stop-sw-state-when-the-bus-recovery-occurs.patch b/queue-5.4/i2c-aspeed-update-the-stop-sw-state-when-the-bus-recovery-occurs.patch new file mode 100644 index 00000000000..66823f3ce5f --- /dev/null +++ b/queue-5.4/i2c-aspeed-update-the-stop-sw-state-when-the-bus-recovery-occurs.patch @@ -0,0 +1,63 @@ +From 93701d3b84ac5f3ea07259d4ced405c53d757985 Mon Sep 17 00:00:00 2001 +From: Tommy Huang +Date: Wed, 11 Sep 2024 17:39:51 +0800 +Subject: i2c: aspeed: Update the stop sw state when the bus recovery occurs + +From: Tommy Huang + +commit 93701d3b84ac5f3ea07259d4ced405c53d757985 upstream. + +When the i2c bus recovery occurs, driver will send i2c stop command +in the scl low condition. In this case the sw state will still keep +original situation. Under multi-master usage, i2c bus recovery will +be called when i2c transfer timeout occurs. Update the stop command +calling with aspeed_i2c_do_stop function to update master_state. + +Fixes: f327c686d3ba ("i2c: aspeed: added driver for Aspeed I2C") +Cc: stable@vger.kernel.org # v4.13+ +Signed-off-by: Tommy Huang +Signed-off-by: Andi Shyti +Signed-off-by: Greg Kroah-Hartman +--- + drivers/i2c/busses/i2c-aspeed.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/drivers/i2c/busses/i2c-aspeed.c ++++ b/drivers/i2c/busses/i2c-aspeed.c +@@ -172,6 +172,13 @@ struct aspeed_i2c_bus { + + static int aspeed_i2c_reset(struct aspeed_i2c_bus *bus); + ++/* precondition: bus.lock has been acquired. */ ++static void aspeed_i2c_do_stop(struct aspeed_i2c_bus *bus) ++{ ++ bus->master_state = ASPEED_I2C_MASTER_STOP; ++ writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG); ++} ++ + static int aspeed_i2c_recover_bus(struct aspeed_i2c_bus *bus) + { + unsigned long time_left, flags; +@@ -189,7 +196,7 @@ static int aspeed_i2c_recover_bus(struct + command); + + reinit_completion(&bus->cmd_complete); +- writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG); ++ aspeed_i2c_do_stop(bus); + spin_unlock_irqrestore(&bus->lock, flags); + + time_left = wait_for_completion_timeout( +@@ -386,13 +393,6 @@ static void aspeed_i2c_do_start(struct a + } + + /* precondition: bus.lock has been acquired. */ +-static void aspeed_i2c_do_stop(struct aspeed_i2c_bus *bus) +-{ +- bus->master_state = ASPEED_I2C_MASTER_STOP; +- writel(ASPEED_I2CD_M_STOP_CMD, bus->base + ASPEED_I2C_CMD_REG); +-} +- +-/* precondition: bus.lock has been acquired. */ + static void aspeed_i2c_next_msg_or_stop(struct aspeed_i2c_bus *bus) + { + if (bus->msgs_index + 1 < bus->msgs_count) { diff --git a/queue-5.4/i2c-isch-add-missed-else.patch b/queue-5.4/i2c-isch-add-missed-else.patch new file mode 100644 index 00000000000..dfbf4dedfbe --- /dev/null +++ b/queue-5.4/i2c-isch-add-missed-else.patch @@ -0,0 +1,34 @@ +From 1db4da55070d6a2754efeb3743f5312fc32f5961 Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Wed, 11 Sep 2024 18:39:14 +0300 +Subject: i2c: isch: Add missed 'else' + +From: Andy Shevchenko + +commit 1db4da55070d6a2754efeb3743f5312fc32f5961 upstream. + +In accordance with the existing comment and code analysis +it is quite likely that there is a missed 'else' when adapter +times out. Add it. + +Fixes: 5bc1200852c3 ("i2c: Add Intel SCH SMBus support") +Signed-off-by: Andy Shevchenko +Cc: # v2.6.27+ +Signed-off-by: Andi Shyti +Signed-off-by: Greg Kroah-Hartman +--- + drivers/i2c/busses/i2c-isch.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/i2c/busses/i2c-isch.c ++++ b/drivers/i2c/busses/i2c-isch.c +@@ -99,8 +99,7 @@ static int sch_transaction(void) + if (retries > MAX_RETRIES) { + dev_err(&sch_adapter.dev, "SMBus Timeout!\n"); + result = -ETIMEDOUT; +- } +- if (temp & 0x04) { ++ } else if (temp & 0x04) { + result = -EIO; + dev_dbg(&sch_adapter.dev, "Bus collision! SMBus may be " + "locked until next hard reset. (sorry!)\n"); diff --git a/queue-5.4/mm-only-enforce-minimum-stack-gap-size-if-it-s-sensible.patch b/queue-5.4/mm-only-enforce-minimum-stack-gap-size-if-it-s-sensible.patch new file mode 100644 index 00000000000..da7a08f9814 --- /dev/null +++ b/queue-5.4/mm-only-enforce-minimum-stack-gap-size-if-it-s-sensible.patch @@ -0,0 +1,51 @@ +From 69b50d4351ed924f29e3d46b159e28f70dfc707f Mon Sep 17 00:00:00 2001 +From: David Gow +Date: Sat, 3 Aug 2024 15:46:41 +0800 +Subject: mm: only enforce minimum stack gap size if it's sensible + +From: David Gow + +commit 69b50d4351ed924f29e3d46b159e28f70dfc707f upstream. + +The generic mmap_base code tries to leave a gap between the top of the +stack and the mmap base address, but enforces a minimum gap size (MIN_GAP) +of 128MB, which is too large on some setups. In particular, on arm tasks +without ADDR_LIMIT_32BIT, the STACK_TOP value is less than 128MB, so it's +impossible to fit such a gap in. + +Only enforce this minimum if MIN_GAP < MAX_GAP, as we'd prefer to honour +MAX_GAP, which is defined proportionally, so scales better and always +leaves us with both _some_ stack space and some room for mmap. + +This fixes the usercopy KUnit test suite on 32-bit arm, as it doesn't set +any personality flags so gets the default (in this case 26-bit) task size. +This test can be run with: ./tools/testing/kunit/kunit.py run --arch arm +usercopy --make_options LLVM=1 + +Link: https://lkml.kernel.org/r/20240803074642.1849623-2-davidgow@google.com +Fixes: dba79c3df4a2 ("arm: use generic mmap top-down layout and brk randomization") +Signed-off-by: David Gow +Reviewed-by: Kees Cook +Cc: Alexandre Ghiti +Cc: Linus Walleij +Cc: Luis Chamberlain +Cc: Mark Rutland +Cc: Russell King +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman +--- + mm/util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/mm/util.c ++++ b/mm/util.c +@@ -407,7 +407,7 @@ static unsigned long mmap_base(unsigned + if (gap + pad > gap) + gap += pad; + +- if (gap < MIN_GAP) ++ if (gap < MIN_GAP && MIN_GAP < MAX_GAP) + gap = MIN_GAP; + else if (gap > MAX_GAP) + gap = MAX_GAP; diff --git a/queue-5.4/series b/queue-5.4/series index e50f83b10fd..af1a06ed5ea 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -171,3 +171,6 @@ usb-yurex-replace-snprintf-with-the-safer-scnprintf-.patch usb-misc-yurex-fix-race-between-read-and-write.patch pps-remove-usage-of-the-deprecated-ida_simple_xx-api.patch pps-add-an-error-check-in-parport_attach.patch +mm-only-enforce-minimum-stack-gap-size-if-it-s-sensible.patch +i2c-aspeed-update-the-stop-sw-state-when-the-bus-recovery-occurs.patch +i2c-isch-add-missed-else.patch