From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Serge Semin <fancer.lancer@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sasha Levin <sashal@kernel.org>,
linux-serial@vger.kernel.org
Subject: [PATCH AUTOSEL 4.19 034/101] tty: serial_core: Set port active bit in uart_port_activate
Date: Fri, 19 Jul 2019 00:06:25 -0400 [thread overview]
Message-ID: <20190719040732.17285-34-sashal@kernel.org> (raw)
In-Reply-To: <20190719040732.17285-1-sashal@kernel.org>
From: Serge Semin <fancer.lancer@gmail.com>
[ Upstream commit 13b18d35909707571af9539f7731389fbf0feb31 ]
A bug was introduced by commit b3b576461864 ("tty: serial_core: convert
uart_open to use tty_port_open"). It caused a constant warning printed
into the system log regarding the tty and port counter mismatch:
[ 21.644197] ttyS ttySx: tty_port_close_start: tty->count = 1 port count = 2
in case if session hangup was detected so the warning is printed starting
from the second open-close iteration.
Particularly the problem was discovered in situation when there is a
serial tty device without hardware back-end being setup. It is considered
by the tty-serial subsystems as a hardware problem with session hang up.
In this case uart_startup() will return a positive value with TTY_IO_ERROR
flag set in corresponding tty_struct instance. The same value will get
passed to be returned from the activate() callback and then being returned
from tty_port_open(). But since in this case tty_port_block_til_ready()
isn't called the TTY_PORT_ACTIVE flag isn't set (while the method had been
called before tty_port_open conversion was introduced and the rest of the
subsystem code expected the bit being set in this case), which prevents the
uart_hangup() method to perform any cleanups including the tty port
counter setting to zero. So the next attempt to open/close the tty device
will discover the counters mismatch.
In order to fix the problem we need to manually set the TTY_PORT_ACTIVE
flag in case if uart_startup() returned a positive value. In this case
the hang up procedure will perform a full set of cleanup actions including
the port ref-counter resetting.
Fixes: b3b576461864 "tty: serial_core: convert uart_open to use tty_port_open"
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/tty/serial/serial_core.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 8dbeb14a1e3a..fe9261ffe3db 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -1738,6 +1738,7 @@ static int uart_port_activate(struct tty_port *port, struct tty_struct *tty)
{
struct uart_state *state = container_of(port, struct uart_state, port);
struct uart_port *uport;
+ int ret;
uport = uart_port_check(state);
if (!uport || uport->flags & UPF_DEAD)
@@ -1748,7 +1749,11 @@ static int uart_port_activate(struct tty_port *port, struct tty_struct *tty)
/*
* Start up the serial port.
*/
- return uart_startup(tty, state, 0);
+ ret = uart_startup(tty, state, 0);
+ if (ret > 0)
+ tty_port_set_active(port, 1);
+
+ return ret;
}
static const char *uart_type(struct uart_port *port)
--
2.20.1
next prev parent reply other threads:[~2019-07-19 4:06 UTC|newest]
Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-19 4:05 [PATCH AUTOSEL 4.19 001/101] drm/panel: simple: Fix panel_simple_dsi_probe Sasha Levin
2019-07-19 4:05 ` [PATCH AUTOSEL 4.19 002/101] iio: adc: stm32-dfsdm: manage the get_irq error case Sasha Levin
2019-07-19 4:05 ` [PATCH AUTOSEL 4.19 003/101] iio: adc: stm32-dfsdm: missing error case during probe Sasha Levin
2019-07-19 4:05 ` [PATCH AUTOSEL 4.19 004/101] staging: vt6656: use meaningful error code during buffer allocation Sasha Levin
2019-07-19 4:05 ` [PATCH AUTOSEL 4.19 005/101] usb: core: hub: Disable hub-initiated U1/U2 Sasha Levin
2019-07-19 4:05 ` [PATCH AUTOSEL 4.19 006/101] tty: max310x: Fix invalid baudrate divisors calculator Sasha Levin
2019-07-19 4:05 ` [PATCH AUTOSEL 4.19 007/101] pinctrl: rockchip: fix leaked of_node references Sasha Levin
2019-07-19 4:05 ` [PATCH AUTOSEL 4.19 008/101] tty: serial: cpm_uart - fix init when SMC is relocated Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 009/101] consolemap: Fix a memory leaking bug in drivers/tty/vt/consolemap.c Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 010/101] drm/amd/display: Fill prescale_params->scale for RGB565 Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 011/101] drm/amdgpu/sriov: Need to initialize the HDP_NONSURFACE_BAStE Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 013/101] drm/amdkfd: Fix a potential memory leak Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 015/101] drm/edid: Fix a missing-check bug in drm_load_edid_firmware() Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 016/101] PCI: Return error if cannot probe VF Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 017/101] drm/bridge: tc358767: read display_props in get_modes() Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 018/101] drm/bridge: sii902x: pixel clock unit is 10kHz instead of 1kHz Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 019/101] gpu: host1x: Increase maximum DMA segment size Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 020/101] drm/crc-debugfs: User irqsafe spinlock in drm_crtc_add_crc_entry Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 021/101] drm/crc-debugfs: Also sprinkle irqrestore over early exits Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 022/101] memstick: Fix error cleanup path of memstick_init Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 023/101] tty/serial: digicolor: Fix digicolor-usart already registered warning Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 024/101] tty: serial: msm_serial: avoid system lockup condition Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 025/101] serial: 8250: Fix TX interrupt handling condition Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 027/101] drm/virtio: Add memory barriers for capset cache Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 028/101] phy: renesas: rcar-gen2: Fix memory leak at error paths Sasha Levin
[not found] ` <20190719040732.17285-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 012/101] drm/amd/display: Disable ABM before destroy ABM struct Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 014/101] drm/amdkfd: Fix sdma queue map issue Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 026/101] drm/amd/display: Always allocate initial connector state state Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 029/101] drm/amd/display: fix compilation error Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 030/101] powerpc/pseries/mobility: prevent cpu hotplug during DT update Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 031/101] drm/rockchip: Properly adjust to a true clock in adjusted_mode Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 032/101] iio:core: Fix bug in length of event info_mask and catch unhandled bits set in masks Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 033/101] serial: imx: fix locking in set_termios() Sasha Levin
2019-07-19 4:06 ` Sasha Levin [this message]
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 035/101] usb: gadget: Zero ffs_io_data Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 036/101] usb: gadget: storage: Remove warning message Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 037/101] mmc: sdhci: sdhci-pci-o2micro: Check if controller supports 8-bit width Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 038/101] powerpc/pci/of: Fix OF flags parsing for 64bit BARs Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 039/101] drm/msm: Depopulate platform on probe failure Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 040/101] serial: mctrl_gpio: Check if GPIO property exisits before requesting it Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 041/101] PCI: sysfs: Ignore lockdep for remove attribute Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 042/101] i2c: stm32f7: fix the get_irq error cases Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 043/101] iio: st_accel: fix iio_triggered_buffer_{pre,post}enable positions Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 044/101] kbuild: Add -Werror=unknown-warning-option to CLANG_FLAGS Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 045/101] genksyms: Teach parser about 128-bit built-in types Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 046/101] PCI: xilinx-nwl: Fix Multi MSI data programming Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 047/101] iio: iio-utils: Fix possible incorrect mask calculation Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 048/101] powerpc/cacheflush: fix variable set but not used Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 049/101] powerpc/xmon: Fix disabling tracing while in xmon Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 050/101] recordmcount: Fix spurious mcount entries on powerpc Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 051/101] mfd: madera: Add missing of table registration Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 052/101] mfd: core: Set fwnode for created devices Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 053/101] mfd: arizona: Fix undefined behavior Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 054/101] mfd: hi655x-pmic: Fix missing return value check for devm_regmap_init_mmio_clk Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 055/101] mm/swap: fix release_pages() when releasing devmap pages Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 056/101] um: Silence lockdep complaint about mmap_sem Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 057/101] powerpc/4xx/uic: clear pending interrupt after irq type/pol change Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 058/101] RDMA/i40iw: Set queue pair state when being queried Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 059/101] serial: sh-sci: Terminate TX DMA during buffer flushing Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 060/101] serial: sh-sci: Fix TX DMA buffer flushing and workqueue races Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 061/101] IB/mlx5: Fixed reporting counters on 2nd port for Dual port RoCE Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 062/101] powerpc/mm: Handle page table allocation failures Sasha Levin
2019-07-19 4:06 ` Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 063/101] IB/ipoib: Add child to parent list only if device initialized Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 064/101] arm64: assembler: Switch ESB-instruction with a vanilla nop if !ARM64_HAS_RAS Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 065/101] PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30 Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 066/101] PCI: mobiveil: Fix PCI base address in MEM/IO outbound windows Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 067/101] PCI: mobiveil: Fix the Class Code field Sasha Levin
2019-07-19 4:06 ` [PATCH AUTOSEL 4.19 068/101] kallsyms: exclude kasan local symbols on s390 Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 069/101] PCI: mobiveil: Initialize Primary/Secondary/Subordinate bus numbers Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 070/101] PCI: mobiveil: Use the 1st inbound window for MEM inbound transactions Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 071/101] perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 072/101] perf stat: Fix use-after-freed pointer detected by the smatch tool Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 073/101] perf top: Fix potential NULL pointer dereference " Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 074/101] perf session: Fix potential NULL pointer dereference found " Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 075/101] perf annotate: Fix dereferencing freed memory " Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 076/101] perf hists browser: Fix potential NULL pointer dereference " Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 077/101] RDMA/rxe: Fill in wc byte_len with IB_WC_RECV_RDMA_WITH_IMM Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 078/101] PCI: dwc: pci-dra7xx: Fix compilation when !CONFIG_GPIOLIB Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 079/101] powerpc/boot: add {get, put}_unaligned_be32 to xz_config.h Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 080/101] block: init flush rq ref count to 1 Sasha Levin
2019-07-19 4:07 ` [f2fs-dev] [PATCH AUTOSEL 4.19 081/101] f2fs: avoid out-of-range memory access Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 082/101] mailbox: handle failed named mailbox channel request Sasha Levin
2019-07-19 4:07 ` [Cluster-devel] [PATCH AUTOSEL 4.19 083/101] dlm: check if workqueues are NULL before flushing/destroying Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 084/101] powerpc/eeh: Handle hugepages in ioremap space Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 085/101] s390/dasd: Make layout analysis ESE compatible Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 086/101] block/bio-integrity: fix a memory leak bug Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 087/101] sh: prevent warnings when using iounmap Sasha Levin
2019-07-19 4:07 ` Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 088/101] mm/kmemleak.c: fix check for softirq context Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 089/101] 9p: pass the correct prototype to read_cache_page Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 090/101] mm/gup.c: mark undo_dev_pagemap as __maybe_unused Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 091/101] mm/gup.c: remove some BUG_ONs from get_gate_page() Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 092/101] memcg, fsnotify: no oom-kill for remote memcg charging Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 093/101] mm/mmu_notifier: use hlist_add_head_rcu() Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 094/101] proc: use down_read_killable mmap_sem for /proc/pid/smaps_rollup Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 095/101] proc: use down_read_killable mmap_sem for /proc/pid/pagemap Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 096/101] proc: use down_read_killable mmap_sem for /proc/pid/clear_refs Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 097/101] proc: use down_read_killable mmap_sem for /proc/pid/map_files Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 098/101] cxgb4: reduce kernel stack usage in cudbg_collect_mem_region() Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 099/101] proc: use down_read_killable mmap_sem for /proc/pid/maps Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 100/101] locking/lockdep: Fix lock used or unused stats error Sasha Levin
2019-07-19 4:07 ` [PATCH AUTOSEL 4.19 101/101] mm: use down_read_killable for locking mmap_sem in access_remote_vm Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190719040732.17285-34-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=fancer.lancer@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.