|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14 |
|
| #
067e9585 |
| 17-Mar-2025 |
Jiri Slaby (SUSE) <[email protected]> |
serial: switch change_irq and change_port to bool in uart_set_info()
change_irq and change_port are boolean variables. Mark them as such (instead of uint).
Signed-off-by: Jiri Slaby (SUSE) <jirisla
serial: switch change_irq and change_port to bool in uart_set_info()
change_irq and change_port are boolean variables. Mark them as such (instead of uint).
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
1e657d66 |
| 17-Mar-2025 |
Jiri Slaby (SUSE) <[email protected]> |
serial: pass struct uart_state to uart_line_info()
uart_line_info() wants to work with struct uart_state. Do not pass a driver and an index. Pass the precomputed struct directly.
Signed-off-by: Jir
serial: pass struct uart_state to uart_line_info()
uart_line_info() wants to work with struct uart_state. Do not pass a driver and an index. Pass the precomputed struct directly.
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
bfc467db |
| 17-Mar-2025 |
Jiri Slaby (SUSE) <[email protected]> |
serial: remove redundant tty_port_link_device()
The linking is done implicitly by tty_port_register_device_attr_serdev() few lines below. So drop this explicit tty_port_link_device().
Signed-off-by
serial: remove redundant tty_port_link_device()
The linking is done implicitly by tty_port_register_device_attr_serdev() few lines below. So drop this explicit tty_port_link_device().
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc7, v6.14-rc6, v6.14-rc5 |
|
| #
5395e09c |
| 26-Feb-2025 |
Marcos Paulo de Souza <[email protected]> |
printk: Rename console_start to console_resume
The intent of console_start was to resume a previously suspended console, so rename it accordingly.
Signed-off-by: Marcos Paulo de Souza <mpdesouza@su
printk: Rename console_start to console_resume
The intent of console_start was to resume a previously suspended console, so rename it accordingly.
Signed-off-by: Marcos Paulo de Souza <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Reviewed-by: John Ogness <[email protected]> Link: https://lore.kernel.org/r/[email protected] [[email protected]: Fixed typo in the commit message. Updated also new drm_log.c.] Signed-off-by: Petr Mladek <[email protected]>
show more ...
|
| #
242fafe3 |
| 26-Feb-2025 |
Marcos Paulo de Souza <[email protected]> |
printk: Rename console_stop to console_suspend
The intent of console_stop was in fact to suspend it, so rename the function accordingly.
Signed-off-by: Marcos Paulo de Souza <[email protected]> Re
printk: Rename console_stop to console_suspend
The intent of console_stop was in fact to suspend it, so rename the function accordingly.
Signed-off-by: Marcos Paulo de Souza <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Reviewed-by: John Ogness <[email protected]> Link: https://lore.kernel.org/r/[email protected] [[email protected]: Fixed typo in the commit message. Updated also new drm_log.c] Signed-off-by: Petr Mladek <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5 |
|
| #
f1e8bf56 |
| 24-Dec-2024 |
Zijun Hu <[email protected]> |
driver core: Constify API device_find_child() and adapt for various usages
Constify the following API: struct device *device_find_child(struct device *dev, void *data, int (*match)(struct device *
driver core: Constify API device_find_child() and adapt for various usages
Constify the following API: struct device *device_find_child(struct device *dev, void *data, int (*match)(struct device *dev, void *data)); To : struct device *device_find_child(struct device *dev, const void *data, device_match_t match); typedef int (*device_match_t)(struct device *dev, const void *data); with the following reasons:
- Protect caller's match data @*data which is for comparison and lookup and the API does not actually need to modify @*data.
- Make the API's parameters (@match)() and @data have the same type as all of other device finding APIs (bus|class|driver)_find_device().
- All kinds of existing device match functions can be directly taken as the API's argument, they were exported by driver core.
Constify the API and adapt for various existing usages.
BTW, various subsystem changes are squashed into this commit to meet 'git bisect' requirement, and this commit has the minimal and simplest changes to complement squashing shortcoming, and that may bring extra code improvement.
Reviewed-by: Alison Schofield <[email protected]> Reviewed-by: Takashi Sakamoto <[email protected]> Acked-by: Uwe Kleine-König <[email protected]> # for drivers/pwm Signed-off-by: Zijun Hu <[email protected]> Reviewed-by: Jonathan Cameron <[email protected]> Reviewed-by: Mathieu Poirier <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.13-rc4, v6.13-rc3 |
|
| #
d2740f7d |
| 11-Dec-2024 |
Jiri Slaby (SUSE) <[email protected]> |
tty: serial: extract uart_change_port() from uart_set_info()
This "change_port" part of uart_set_info() is for no good reason inlined there. It makes the function rather hard to read. Therefore, ext
tty: serial: extract uart_change_port() from uart_set_info()
This "change_port" part of uart_set_info() is for no good reason inlined there. It makes the function rather hard to read. Therefore, extract it to a separate function.
This allows for flattening the ifs (with short path "return"s) and avoiding two levels of indentation. Both making the code really flat and comprehesible.
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
4d0e56d5 |
| 11-Dec-2024 |
Jiri Slaby (SUSE) <[email protected]> |
tty: serial: get rid of exit label from uart_set_info()
The label is unneeded since 7ba2e769825f (tty: Split the serial_core helpers for setserial into two). Until then, there was a lock held in uar
tty: serial: get rid of exit label from uart_set_info()
The label is unneeded since 7ba2e769825f (tty: Split the serial_core helpers for setserial into two). Until then, there was a lock held in uart_set_info().
Now it is not, so we can remove the label. This involves reordering the code, so that it is clear what values are returned, where and why. Until now, it was really hard to follow.
The "change_port" part of the function is extracted into a separate function in the next patch. This patch makes the transition there easier too.
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
e52ed2dd |
| 11-Dec-2024 |
Jiri Slaby (SUSE) <[email protected]> |
tty: serial_core: use more guard(mutex)
Simplify 4 more functions using guard(mutex): uart_get_info(), console_store(), serial_core_add_one_port(), and serial_core_register_port(). Especially consol
tty: serial_core: use more guard(mutex)
Simplify 4 more functions using guard(mutex): uart_get_info(), console_store(), serial_core_add_one_port(), and serial_core_register_port(). Especially console_store() is now much less convoluted. In the others, we save some goto-s and even local variables are dropped in some.
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.13-rc2, v6.13-rc1, v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4 |
|
| #
5732a63b |
| 15-Oct-2024 |
Bart Van Assche <[email protected]> |
serial: core: Switch to irq_get_nr_irqs()
Use the irq_get_nr_irqs() function instead of the global variable 'nr_irqs'. Prepare for changing 'nr_irqs' from an exported global variable into a variable
serial: core: Switch to irq_get_nr_irqs()
Use the irq_get_nr_irqs() function instead of the global variable 'nr_irqs'. Prepare for changing 'nr_irqs' from an exported global variable into a variable with file scope.
Signed-off-by: Bart Van Assche <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Link: https://lore.kernel.org/all/[email protected]
show more ...
|
|
Revision tags: v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7, v6.11-rc6, v6.11-rc5 |
|
| #
eabd4600 |
| 20-Aug-2024 |
John Ogness <[email protected]> |
serial: core: Introduce wrapper to set @uart_port->cons
Introduce uart_port_set_cons() as a wrapper to set @cons of a uart_port. The wrapper sets @cons under the port lock in order to prevent @cons
serial: core: Introduce wrapper to set @uart_port->cons
Introduce uart_port_set_cons() as a wrapper to set @cons of a uart_port. The wrapper sets @cons under the port lock in order to prevent @cons from disappearing while another context is holding the port lock. This is necessary for a follow-up commit relating to the port lock wrappers, which rely on @cons not changing between lock and unlock.
Signed-off-by: John Ogness <[email protected]> Tested-by: Théo Lebrun <[email protected]> # EyeQ5, AMBA-PL011 Acked-by: Greg Kroah-Hartman <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Reviewed-by: Ilpo Järvinen <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Petr Mladek <[email protected]>
show more ...
|
|
Revision tags: v6.11-rc4, v6.11-rc3 |
|
| #
5879adbf |
| 08-Aug-2024 |
Jiri Slaby (SUSE) <[email protected]> |
serial: use guards for simple mutex locks
Guards can help to make the code more readable. So use it wherever they do so.
On many places labels and 'ret' locals are eliminated completely.
Signed-of
serial: use guards for simple mutex locks
Guards can help to make the code more readable. So use it wherever they do so.
On many places labels and 'ret' locals are eliminated completely.
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
d0009a32 |
| 05-Aug-2024 |
Jiri Slaby (SUSE) <[email protected]> |
serial: don't use uninitialized value in uart_poll_init()
Coverity reports (as CID 1536978) that uart_poll_init() passes uninitialized pm_state to uart_change_pm(). It is in case the first 'if' take
serial: don't use uninitialized value in uart_poll_init()
Coverity reports (as CID 1536978) that uart_poll_init() passes uninitialized pm_state to uart_change_pm(). It is in case the first 'if' takes the true branch (does "goto out;").
Fix this and simplify the function by simple guard(mutex). The code needs no labels after this at all. And it is pretty clear that the code has not fiddled with pm_state at that point.
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Fixes: 5e227ef2aa38 (serial: uart_poll_init() should power on the UART) Cc: [email protected] Cc: Douglas Anderson <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Reviewed-by: Ilpo Järvinen <[email protected]> Reviewed-by: Douglas Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
602babaa |
| 05-Aug-2024 |
Jiri Slaby (SUSE) <[email protected]> |
serial: protect uart_port_dtr_rts() in uart_shutdown() too
Commit af224ca2df29 (serial: core: Prevent unsafe uart port access, part 3) added few uport == NULL checks. It added one to uart_shutdown()
serial: protect uart_port_dtr_rts() in uart_shutdown() too
Commit af224ca2df29 (serial: core: Prevent unsafe uart port access, part 3) added few uport == NULL checks. It added one to uart_shutdown(), so the commit assumes, uport can be NULL in there. But right after that protection, there is an unprotected "uart_port_dtr_rts(uport, false);" call. That is invoked only if HUPCL is set, so I assume that is the reason why we do not see lots of these reports.
Or it cannot be NULL at this point at all for some reason :P.
Until the above is investigated, stay on the safe side and move this dereference to the if too.
I got this inconsistency from Coverity under CID 1585130. Thanks.
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Cc: Peter Hurley <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.11-rc2, v6.11-rc1 |
|
| #
6eabce66 |
| 17-Jul-2024 |
George Kennedy <[email protected]> |
serial: core: check uartclk for zero to avoid divide by zero
Calling ioctl TIOCSSERIAL with an invalid baud_base can result in uartclk being zero, which will result in a divide by zero error in uart
serial: core: check uartclk for zero to avoid divide by zero
Calling ioctl TIOCSSERIAL with an invalid baud_base can result in uartclk being zero, which will result in a divide by zero error in uart_get_divisor(). The check for uartclk being zero in uart_set_info() needs to be done before other settings are made as subsequent calls to ioctl TIOCSSERIAL for the same port would be impacted if the uartclk check was done where uartclk gets set.
Oops: divide error: 0000 PREEMPT SMP KASAN PTI RIP: 0010:uart_get_divisor (drivers/tty/serial/serial_core.c:580) Call Trace: <TASK> serial8250_get_divisor (drivers/tty/serial/8250/8250_port.c:2576 drivers/tty/serial/8250/8250_port.c:2589) serial8250_do_set_termios (drivers/tty/serial/8250/8250_port.c:502 drivers/tty/serial/8250/8250_port.c:2741) serial8250_set_termios (drivers/tty/serial/8250/8250_port.c:2862) uart_change_line_settings (./include/linux/spinlock.h:376 ./include/linux/serial_core.h:608 drivers/tty/serial/serial_core.c:222) uart_port_startup (drivers/tty/serial/serial_core.c:342) uart_startup (drivers/tty/serial/serial_core.c:368) uart_set_info (drivers/tty/serial/serial_core.c:1034) uart_set_info_user (drivers/tty/serial/serial_core.c:1059) tty_set_serial (drivers/tty/tty_io.c:2637) tty_ioctl (drivers/tty/tty_io.c:2647 drivers/tty/tty_io.c:2791) __x64_sys_ioctl (fs/ioctl.c:52 fs/ioctl.c:907 fs/ioctl.c:893 fs/ioctl.c:893) do_syscall_64 (arch/x86/entry/common.c:52 (discriminator 1) arch/x86/entry/common.c:83 (discriminator 1)) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
Reported-by: syzkaller <[email protected]> Cc: [email protected] Signed-off-by: George Kennedy <[email protected]> Rule: add Link: https://lore.kernel.org/stable/1721148848-9784-1-git-send-email-george.kennedy%40oracle.com Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.10, v6.10-rc7 |
|
| #
12c91cec |
| 03-Jul-2024 |
Tony Lindgren <[email protected]> |
serial: core: Add serial_base_match_and_update_preferred_console()
Let's add serial_base_match_and_update_preferred_console() for consoles using DEVNAME:0.0 style naming.
The earlier approach to ad
serial: core: Add serial_base_match_and_update_preferred_console()
Let's add serial_base_match_and_update_preferred_console() for consoles using DEVNAME:0.0 style naming.
The earlier approach to add it caused issues in the kernel command line ordering as we were calling __add_preferred_console() again for the deferred consoles.
Signed-off-by: Tony Lindgren <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Tested-by: Petr Mladek <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc6 |
|
| #
a5e4bb69 |
| 25-Jun-2024 |
Greg Kroah-Hartman <[email protected]> |
Revert "serial: core: Add support for DEVNAME:0.0 style naming for kernel console"
This reverts commit 787a1cabac01c99846070fcf702e53befaf89f79.
Let's roll back all of the serial core and printk co
Revert "serial: core: Add support for DEVNAME:0.0 style naming for kernel console"
This reverts commit 787a1cabac01c99846070fcf702e53befaf89f79.
Let's roll back all of the serial core and printk console changes that went into 6.10-rc1 as there still are problems with them that need to be sorted out.
Link: https://lore.kernel.org/r/ZnpRozsdw6zbjqze@tlindgre-MOBL1 Reported-by: Petr Mladek <[email protected]> Reported-by: Tony Lindgren <[email protected]> Cc: Jiri Slaby <[email protected]> Cc: John Ogness <[email protected]> Cc: Sergey Senozhatsky <[email protected]> Cc: Andy Shevchenko <[email protected]> Cc: Ilpo Järvinen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2 |
|
| #
ae01e52d |
| 28-May-2024 |
Tetsuo Handa <[email protected]> |
serial: drop debugging WARN_ON_ONCE() from uart_write()
syzbot is reporting lockdep warning upon
int disc = 7; ioctl(open("/dev/ttyS3", O_RDONLY), TIOCSETD, &disc);
sequence. Do like what comm
serial: drop debugging WARN_ON_ONCE() from uart_write()
syzbot is reporting lockdep warning upon
int disc = 7; ioctl(open("/dev/ttyS3", O_RDONLY), TIOCSETD, &disc);
sequence. Do like what commit 5f1149d2f4bf ("serial: drop debugging WARN_ON_ONCE() from uart_put_char()") does.
Reported-by: [email protected] Closes: https://syzkaller.appspot.com/bug?extid=f78380e4eae53c64125c Signed-off-by: Tetsuo Handa <[email protected]> Acked-by: Jiri Slaby <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc1, v6.9 |
|
| #
e21de145 |
| 09-May-2024 |
Hans de Goede <[email protected]> |
serial: Clear UPF_DEAD before calling tty_port_register_device_attr_serdev()
If a serdev_device_driver is already loaded for a serdev_tty_port when it gets registered by tty_port_register_device_att
serial: Clear UPF_DEAD before calling tty_port_register_device_attr_serdev()
If a serdev_device_driver is already loaded for a serdev_tty_port when it gets registered by tty_port_register_device_attr_serdev() then that driver's probe() method will be called immediately.
The serdev_device_driver's probe() method should then be able to call serdev_device_open() successfully, but because UPF_DEAD is still dead serdev_device_open() will fail with -ENXIO in this scenario:
serdev_device_open() ctrl->ops->open() /* this callback being ttyport_open() */ tty->ops->open() /* this callback being uart_open() */ tty_port_open() port->ops->activate() /* this callback being uart_port_activate() */ Find bit UPF_DEAD is set in uport->flags and fail with errno -ENXIO.
Fix this be clearing UPF_DEAD before tty_port_register_device_attr_serdev() note this only moves up the UPD_DEAD clearing a small bit, before:
tty_port_register_device_attr_serdev(); mutex_unlock(&tty_port.mutex); uart_port.flags &= ~UPF_DEAD; mutex_unlock(&port_mutex);
after:
uart_port.flags &= ~UPF_DEAD; tty_port_register_device_attr_serdev(); mutex_unlock(&tty_port.mutex); mutex_unlock(&port_mutex);
Reported-by: Weifeng Liu <[email protected]> Closes: https://lore.kernel.org/platform-driver-x86/[email protected]/ Tested-by: Weifeng Liu <[email protected]> Signed-off-by: Hans de Goede <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.9-rc7 |
|
| #
a47cf07f |
| 30-Apr-2024 |
Claudiu Beznea <[email protected]> |
serial: core: Call device_set_awake_path() for console port
In case the UART port is used as a console, no_console_suspend is available in bootargs and UART port is part of a software-controlled pow
serial: core: Call device_set_awake_path() for console port
In case the UART port is used as a console, no_console_suspend is available in bootargs and UART port is part of a software-controlled power domain we need to call device_set_awake_path(). This lets the power domain core code know that this domain should not be powered off during system suspend. Otherwise, the UART port power domain is turned off, nothing is printed while suspending and the suspend/resume process is blocked. This was detected on the Renesas RZ/G3S SoC while adding support for power domains.
Based on code investigation (on v6.9-rc5), this issue is present on other SoCs (e.g., Renesas R-Mobile A1 [1], IMX8QXP [2]) and different SoCs have particular implementation to handle it. Due to this the patch added the call of device_set_awake_path() in uart_suspend_port() instead of having it in the platform specific UART driver.
[1] drivers/pmdomain/renesas/rmobile-sysc.c:116 [2] drivers/pmdomain/imx/scu-pd.c:357
Suggested-by: Ulf Hansson <[email protected]> Suggested-by: Geert Uytterhoeven <[email protected]> Reviewed-by: Ulf Hansson <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Reviewed-by: Tony Lindgren <[email protected]> Reviewed-by: Geert Uytterhoeven <[email protected]> Tested-by: Geert Uytterhoeven <[email protected]> Signed-off-by: Claudiu Beznea <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.9-rc6, v6.9-rc5, v6.9-rc4 |
|
| #
abcd8632 |
| 09-Apr-2024 |
Andy Shevchenko <[email protected]> |
serial: core: Extract uart_alloc_xmit_buf() and uart_free_xmit_buf()
After conversion to the kfifo, it becomes possible to extract two helper functions for better maintenance and code deduplication.
serial: core: Extract uart_alloc_xmit_buf() and uart_free_xmit_buf()
After conversion to the kfifo, it becomes possible to extract two helper functions for better maintenance and code deduplication. Do it here.
Signed-off-by: Andy Shevchenko <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
5f1149d2 |
| 16-Apr-2024 |
Jiri Slaby (SUSE) <[email protected]> |
serial: drop debugging WARN_ON_ONCE() from uart_put_char()
Pengfei Xu reports, that the -next commit 1788cf6a91d9 (tty: serial: switch from circ_buf to kfifo) tries to emit a WARNING and that leads
serial: drop debugging WARN_ON_ONCE() from uart_put_char()
Pengfei Xu reports, that the -next commit 1788cf6a91d9 (tty: serial: switch from circ_buf to kfifo) tries to emit a WARNING and that leads to lockdep errors. Obviously we cannot print anything from uart_put_char()!
This WARN_ON_ONCE() was/is a debug aid to check if the condition in uart_put_char() can happen at all. Pengfei Xu confirmed it can. Unlike me and kbuild bot in my queue.
Second, I completely forgot about it, so I did not remove it in the final version, nor mentioned it in the commit log.
Drop it now as we are all good. And we even have stack traces (and a reproducer)!
Signed-off-by: Jiri Slaby (SUSE) <[email protected]> Reported-by: Pengfei Xu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
1aa4ad4e |
| 11-Apr-2024 |
Tony Lindgren <[email protected]> |
serial: core: Fix missing shutdown and startup for serial base port
We are seeing start_tx being called after port shutdown as noted by Jiri. This happens because we are missing the startup and shut
serial: core: Fix missing shutdown and startup for serial base port
We are seeing start_tx being called after port shutdown as noted by Jiri. This happens because we are missing the startup and shutdown related functions for the serial base port.
Let's fix the issue by adding startup and shutdown functions for the serial base port to block tx flushing for the serial base port when the port is not in use.
Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM") Cc: stable <[email protected]> Reported-by: Jiri Slaby <[email protected]> Signed-off-by: Tony Lindgren <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.9-rc3 |
|
| #
9cf7ea2e |
| 04-Apr-2024 |
Andy Shevchenko <[email protected]> |
serial: core: Clearing the circular buffer before NULLifying it
The circular buffer is NULLified in uart_tty_port_shutdown() under the spin lock. However, the PM or other timer based callbacks may s
serial: core: Clearing the circular buffer before NULLifying it
The circular buffer is NULLified in uart_tty_port_shutdown() under the spin lock. However, the PM or other timer based callbacks may still trigger after this event without knowning that buffer pointer is not valid. Since the serial code is a bit inconsistent in checking the buffer state (some rely on the head-tail positions, some on the buffer pointer), it's better to have both aligned, i.e. buffer pointer to be NULL and head-tail possitions to be the same, meaning it's empty. This will prevent asynchronous calls to dereference NULL pointer as reported recently in 8250 case:
BUG: kernel NULL pointer dereference, address: 00000cf5 Workqueue: pm pm_runtime_work EIP: serial8250_tx_chars (drivers/tty/serial/8250/8250_port.c:1809) ... ? serial8250_tx_chars (drivers/tty/serial/8250/8250_port.c:1809) __start_tx (drivers/tty/serial/8250/8250_port.c:1551) serial8250_start_tx (drivers/tty/serial/8250/8250_port.c:1654) serial_port_runtime_suspend (include/linux/serial_core.h:667 drivers/tty/serial/serial_port.c:63) __rpm_callback (drivers/base/power/runtime.c:393) ? serial_port_remove (drivers/tty/serial/serial_port.c:50) rpm_suspend (drivers/base/power/runtime.c:447)
The proposed change will prevent ->start_tx() to be called during suspend on shut down port.
Fixes: 43066e32227e ("serial: port: Don't suspend if the port is still busy") Cc: stable <[email protected]> Reported-by: kernel test robot <[email protected]> Closes: https://lore.kernel.org/oe-lkp/[email protected] Signed-off-by: Andy Shevchenko <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.9-rc2 |
|
| #
55559805 |
| 25-Mar-2024 |
Tony Lindgren <[email protected]> |
serial: core: Fix regression when runtime PM is not enabled
Commit 45a3a8ef8129 ("serial: core: Revert checks for tx runtime PM state") caused a regression for Sun Ultra 60 for the sunsab driver as
serial: core: Fix regression when runtime PM is not enabled
Commit 45a3a8ef8129 ("serial: core: Revert checks for tx runtime PM state") caused a regression for Sun Ultra 60 for the sunsab driver as reported by Nick Bowler <[email protected]>.
We need to add back the check runtime PM enabled state for serial port controller device, I wrongly assumed earlier we could just remove it.
Fixes: 45a3a8ef8129 ("serial: core: Revert checks for tx runtime PM state") Cc: stable <[email protected]> Reported-by: Nick Bowler <[email protected]> Signed-off-by: Tony Lindgren <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|