]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Jul 2022 15:19:55 +0000 (17:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Jul 2022 15:19:55 +0000 (17:19 +0200)
added patches:
batman-adv-use-netif_rx_any_context-any.patch
serial-mvebu-uart-correctly-report-configured-baudrate-value.patch

queue-5.15/batman-adv-use-netif_rx_any_context-any.patch [new file with mode: 0644]
queue-5.15/serial-mvebu-uart-correctly-report-configured-baudrate-value.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/batman-adv-use-netif_rx_any_context-any.patch b/queue-5.15/batman-adv-use-netif_rx_any_context-any.patch
new file mode 100644 (file)
index 0000000..9ad180f
--- /dev/null
@@ -0,0 +1,45 @@
+From bigeasy@linutronix.de  Sat Jul 23 17:18:39 2022
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Tue, 19 Jul 2022 18:08:12 +0200
+Subject: batman-adv: Use netif_rx_any_context() any.
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Sasha Levin <sashal@kernel.org>
+Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org, Antonio Quartulli <a@unstable.cc>, Marek Lindner <mareklindner@neomailbox.ch>, Simon Wunderlich <sw@simonwunderlich.de>, Sven Eckelmann <sven@narfation.org>, b.a.t.m.a.n@lists.open-mesh.org, "David S. Miller" <davem@davemloft.net>, Thomas Gleixner <tglx@linutronix.de>
+Message-ID: <YtbW7Ca3t4/3qB7k@linutronix.de>
+Content-Disposition: inline
+
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+
+This reverts the stable commit
+   e65d78b12fbc0 ("batman-adv: Use netif_rx().")
+
+The commit message says:
+
+| Since commit
+|    baebdf48c3600 ("net: dev: Makes sure netif_rx() can be invoked in any context.")
+|
+| the function netif_rx() can be used in preemptible/thread context as
+| well as in interrupt context.
+
+This commit (baebdf48c3600) has not been backported to the 5.15 stable
+series and therefore, the commit which builds upon it, must not be
+backported either.
+
+Revert the backport and use netif_rx_any_context() again.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/batman-adv/bridge_loop_avoidance.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/batman-adv/bridge_loop_avoidance.c
++++ b/net/batman-adv/bridge_loop_avoidance.c
+@@ -443,7 +443,7 @@ static void batadv_bla_send_claim(struct
+       batadv_add_counter(bat_priv, BATADV_CNT_RX_BYTES,
+                          skb->len + ETH_HLEN);
+-      netif_rx(skb);
++      netif_rx_any_context(skb);
+ out:
+       batadv_hardif_put(primary_if);
+ }
diff --git a/queue-5.15/serial-mvebu-uart-correctly-report-configured-baudrate-value.patch b/queue-5.15/serial-mvebu-uart-correctly-report-configured-baudrate-value.patch
new file mode 100644 (file)
index 0000000..fbc5d25
--- /dev/null
@@ -0,0 +1,92 @@
+From 4f532c1e25319e42996ec18a1f473fd50c8e575d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
+Date: Tue, 28 Jun 2022 12:09:22 +0200
+Subject: serial: mvebu-uart: correctly report configured baudrate value
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Pali Rohár <pali@kernel.org>
+
+commit 4f532c1e25319e42996ec18a1f473fd50c8e575d upstream.
+
+Functions tty_termios_encode_baud_rate() and uart_update_timeout() should
+be called with the baudrate value which was set to hardware. Linux then
+report exact values via ioctl(TCGETS2) to userspace.
+
+Change mvebu_uart_baud_rate_set() function to return baudrate value which
+was set to hardware and propagate this value to above mentioned functions.
+
+With this change userspace would see precise value in termios c_ospeed
+field.
+
+Fixes: 68a0db1d7da2 ("serial: mvebu-uart: add function to change baudrate")
+Cc: stable <stable@kernel.org>
+Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Signed-off-by: Pali Rohár <pali@kernel.org>
+Link: https://lore.kernel.org/r/20220628100922.10717-1-pali@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/mvebu-uart.c |   25 +++++++++++++------------
+ 1 file changed, 13 insertions(+), 12 deletions(-)
+
+--- a/drivers/tty/serial/mvebu-uart.c
++++ b/drivers/tty/serial/mvebu-uart.c
+@@ -442,13 +442,13 @@ static void mvebu_uart_shutdown(struct u
+       }
+ }
+-static int mvebu_uart_baud_rate_set(struct uart_port *port, unsigned int baud)
++static unsigned int mvebu_uart_baud_rate_set(struct uart_port *port, unsigned int baud)
+ {
+       unsigned int d_divisor, m_divisor;
+       u32 brdv, osamp;
+       if (!port->uartclk)
+-              return -EOPNOTSUPP;
++              return 0;
+       /*
+        * The baudrate is derived from the UART clock thanks to two divisors:
+@@ -472,7 +472,7 @@ static int mvebu_uart_baud_rate_set(stru
+       osamp &= ~OSAMP_DIVISORS_MASK;
+       writel(osamp, port->membase + UART_OSAMP);
+-      return 0;
++      return DIV_ROUND_CLOSEST(port->uartclk, d_divisor * m_divisor);
+ }
+ static void mvebu_uart_set_termios(struct uart_port *port,
+@@ -509,15 +509,11 @@ static void mvebu_uart_set_termios(struc
+       max_baud = 230400;
+       baud = uart_get_baud_rate(port, termios, old, min_baud, max_baud);
+-      if (mvebu_uart_baud_rate_set(port, baud)) {
+-              /* No clock available, baudrate cannot be changed */
+-              if (old)
+-                      baud = uart_get_baud_rate(port, old, NULL,
+-                                                min_baud, max_baud);
+-      } else {
+-              tty_termios_encode_baud_rate(termios, baud, baud);
+-              uart_update_timeout(port, termios->c_cflag, baud);
+-      }
++      baud = mvebu_uart_baud_rate_set(port, baud);
++
++      /* In case baudrate cannot be changed, report previous old value */
++      if (baud == 0 && old)
++              baud = tty_termios_baud_rate(old);
+       /* Only the following flag changes are supported */
+       if (old) {
+@@ -528,6 +524,11 @@ static void mvebu_uart_set_termios(struc
+               termios->c_cflag |= CS8;
+       }
++      if (baud != 0) {
++              tty_termios_encode_baud_rate(termios, baud, baud);
++              uart_update_timeout(port, termios->c_cflag, baud);
++      }
++
+       spin_unlock_irqrestore(&port->lock, flags);
+ }
index 968c48acaff90afe4b0aeaaf330481868a8de749..cc361d4038f2aeaa28a3334baf7f361fa6d78816 100644 (file)
@@ -11,3 +11,5 @@ pci-hv-fix-multi-msi-to-allow-more-than-one-msi-vector.patch
 pci-hv-fix-hv_arch_irq_unmask-for-multi-msi.patch
 pci-hv-reuse-existing-irte-allocation-in-compose_msi_msg.patch
 pci-hv-fix-interrupt-mapping-for-multi-msi.patch
+serial-mvebu-uart-correctly-report-configured-baudrate-value.patch
+batman-adv-use-netif_rx_any_context-any.patch