From patchwork Thu Feb 20 11:15:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867072 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1FFCB1F2BA4; Thu, 20 Feb 2025 11:16:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050175; cv=none; b=q/AUrOGlPdzBIYOjMzLi8pZioz1hY+aIleGjOKAsKHxVl0WDGnqRLPpotLolx8r4Qdf25XwrJHUvZ7/a7UU8ziVRSlkobRlwEPmQEyLPfR/CaTeX++Byjbafj/zC19gREDzlFQG99uswwfZngKYRYImzbD7MaSpbzoCUmSdQxP8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050175; c=relaxed/simple; bh=UGUcZhh2uN5m2e5STrQhOWzZBbObdTYU/HLYBpoIjf0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Hs+QKrifHMRJbEPXy8w28z4z9GxMypjFLmXfL1tMPCqsJC4rVdyuS0EVcoJlrVYUT/z4/0L/xKp7/nKSKo6mpdRRZu63rBMFDGNo64tchVIEodWEQIzAFN2Tog0EHqyXNXuEz5teN5HCRSVWnqvy5iD5Mgqgt0VvRrYO5NchgQk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CkxsvloC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="CkxsvloC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 84209C4CEDD; Thu, 20 Feb 2025 11:16:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050174; bh=UGUcZhh2uN5m2e5STrQhOWzZBbObdTYU/HLYBpoIjf0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CkxsvloCLVEYCIdzMrcDLCc0pZu8PABLUaTOu6+J5rpGkZvViFEcvQKpj7FadD8If A9dV1ZYQkNT34jjCS4uqeDZM7LKAurWwkoHD5TM3CqoKPkdtpuzrquDz1DlbmsBx8w 735cFSqL1hlgWOzTI2e4bpNY5X1gve8YlCkOGfw3j+TFOLa94bQJBU4wUeVcyEIvOO htgU85v6t7aoeaL8Vhf9Q9af3lIVnB8ieTdfF09TL8rdoGeFEdlUgEIOlE4qR7WyOA qm2hfkcN/g1+thcefn2sWIZbQoK3vjddXfRsOd18Ect9qxA4Od28jV9YidfmdIVCRW iWLxTDogCp1wg== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 01/29] tty: convert "TTY Struct Flags" to an enum Date: Thu, 20 Feb 2025 12:15:38 +0100 Message-ID: <20250220111606.138045-2-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Convert TTY_* macros (flags) to an enum. This allows for easier kernel-doc (the comment needed fine tuning), grouping of these nicely, and proper checking. Note that these are bit positions. So they are used such as test_bit(TTY_THROTTLED, ...). Given these are not the user API (only in-kernel API/ABI), the bit positions are NOT preserved in this patch. All are renumbered naturally using the enum-auto-numbering. Signed-off-by: Jiri Slaby (SUSE) --- Documentation/driver-api/tty/tty_struct.rst | 2 +- include/linux/tty.h | 52 +++++++++++---------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/Documentation/driver-api/tty/tty_struct.rst b/Documentation/driver-api/tty/tty_struct.rst index c72f5a4293b2..29caf1c1ca5f 100644 --- a/Documentation/driver-api/tty/tty_struct.rst +++ b/Documentation/driver-api/tty/tty_struct.rst @@ -72,7 +72,7 @@ TTY Struct Flags ================ .. kernel-doc:: include/linux/tty.h - :doc: TTY Struct Flags + :identifiers: tty_struct_flags TTY Struct Reference ==================== diff --git a/include/linux/tty.h b/include/linux/tty.h index 2372f9357240..6bb4fb3845f0 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -251,7 +251,7 @@ struct tty_file_private { }; /** - * DOC: TTY Struct Flags + * enum tty_struct_flags - TTY Struct Flags * * These bits are used in the :c:member:`tty_struct.flags` field. * @@ -260,62 +260,64 @@ struct tty_file_private { * tty->write. Thus, you must use the inline functions set_bit() and * clear_bit() to make things atomic. * - * TTY_THROTTLED + * @TTY_THROTTLED: * Driver input is throttled. The ldisc should call * :c:member:`tty_driver.unthrottle()` in order to resume reception when * it is ready to process more data (at threshold min). * - * TTY_IO_ERROR + * @TTY_IO_ERROR: * If set, causes all subsequent userspace read/write calls on the tty to * fail, returning -%EIO. (May be no ldisc too.) * - * TTY_OTHER_CLOSED + * @TTY_OTHER_CLOSED: * Device is a pty and the other side has closed. * - * TTY_EXCLUSIVE + * @TTY_EXCLUSIVE: * Exclusive open mode (a single opener). * - * TTY_DO_WRITE_WAKEUP + * @TTY_DO_WRITE_WAKEUP: * If set, causes the driver to call the * :c:member:`tty_ldisc_ops.write_wakeup()` method in order to resume * transmission when it can accept more data to transmit. * - * TTY_LDISC_OPEN + * @TTY_LDISC_OPEN: * Indicates that a line discipline is open. For debugging purposes only. * - * TTY_PTY_LOCK + * @TTY_PTY_LOCK: * A flag private to pty code to implement %TIOCSPTLCK/%TIOCGPTLCK logic. * - * TTY_NO_WRITE_SPLIT + * @TTY_NO_WRITE_SPLIT: * Prevent driver from splitting up writes into smaller chunks (preserve * write boundaries to driver). * - * TTY_HUPPED + * @TTY_HUPPED: * The TTY was hung up. This is set post :c:member:`tty_driver.hangup()`. * - * TTY_HUPPING + * @TTY_HUPPING: * The TTY is in the process of hanging up to abort potential readers. * - * TTY_LDISC_CHANGING + * @TTY_LDISC_CHANGING: * Line discipline for this TTY is being changed. I/O should not block * when this is set. Use tty_io_nonblock() to check. * - * TTY_LDISC_HALTED + * @TTY_LDISC_HALTED: * Line discipline for this TTY was stopped. No work should be queued to * this ldisc. */ -#define TTY_THROTTLED 0 -#define TTY_IO_ERROR 1 -#define TTY_OTHER_CLOSED 2 -#define TTY_EXCLUSIVE 3 -#define TTY_DO_WRITE_WAKEUP 5 -#define TTY_LDISC_OPEN 11 -#define TTY_PTY_LOCK 16 -#define TTY_NO_WRITE_SPLIT 17 -#define TTY_HUPPED 18 -#define TTY_HUPPING 19 -#define TTY_LDISC_CHANGING 20 -#define TTY_LDISC_HALTED 22 +enum tty_struct_flags { + TTY_THROTTLED, + TTY_IO_ERROR, + TTY_OTHER_CLOSED, + TTY_EXCLUSIVE, + TTY_DO_WRITE_WAKEUP, + TTY_LDISC_OPEN, + TTY_PTY_LOCK, + TTY_NO_WRITE_SPLIT, + TTY_HUPPED, + TTY_HUPPING, + TTY_LDISC_CHANGING, + TTY_LDISC_HALTED, +}; static inline bool tty_io_nonblock(struct tty_struct *tty, struct file *file) { From patchwork Thu Feb 20 11:15:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867071 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3BB3B1F4703; Thu, 20 Feb 2025 11:16:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050179; cv=none; b=tYwmNvCTKuFp3Of3rUOifyUcRcC0prJDF52iQTEiNYyBjRg/xmgK33O45d+pUzlSiviYQHjgDlKRfZWpSKqaTYEdGAuyk8COKNM17b02RFUtxkW/jp9hjsbCGRhSG6mrR55bdkgrftc873H9J5gHeYj/Z/mNwCHNgl105KxACNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050179; c=relaxed/simple; bh=WbIbJP8V1uaYvMyiXLy9rg/qAp/4D3SlYH4GG3NpwO4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SkL9c3c9GfpSTNemyXHu6l8NMnD2pAumNe5tXa3drh8wAmbS5DJcs73QQUBZ/yyZtfbguiwcLQ0ZY1e3l2qTIVoPAQkqDEv8a5C2wHlawHfsrmJY0NdtmT4eZHABWhtUXmVC5V+2SobSF/Fp/b5rxWHu5ww4wlQWMlyDPvmSmvw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=q2yjMtzj; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="q2yjMtzj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F49CC4CEE3; Thu, 20 Feb 2025 11:16:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050178; bh=WbIbJP8V1uaYvMyiXLy9rg/qAp/4D3SlYH4GG3NpwO4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q2yjMtzjXSeVJC7h5fsIgqV1EUf5vIiYqndGU4VC/zqRISxdGNXUnyIBFqgSZlhbL dltiA0Iqs70r/w3SU7LnYOA+c/Z7ssyC71hBktYxAirrszteC+oIeW746Y+lDEyq/I oG4ZTigA0sl05+Q5oqNoi/DpWpGQkbwo+VDEN7lv61sGPVZbObYuB+4qLWdThggn+N uFamXbLqScpRtulGiCgFnak0PuWUpEuL+OtR+uHS7K/RmGAEDS7O4mJT+HdC0rwFn7 oNIthpYIt/di4XYOH+ZjgtB8vaKFpze2GB+A7zFsynxF9jWd92rrSNXypjs0Ht6J/A 8s1g/GIpnWU8A== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org Subject: [PATCH 03/29] tty: caif: do not use N_TTY_BUF_SIZE Date: Thu, 20 Feb 2025 12:15:40 +0100 Message-ID: <20250220111606.138045-4-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 N_TTY_BUF_SIZE -- as the name suggests -- is the N_TTY's buffer size. There is no reason to couple that to caif's tty->receive_room. Use 4096 directly -- even though, it should be some sort of "SKB_MAX_ALLOC" or alike. But definitely not N_TTY_BUF_SIZE. N_TTY_BUF_SIZE is private and will be moved to n_tty.c later. Signed-off-by: Jiri Slaby (SUSE) Cc: Andrew Lunn Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: netdev@vger.kernel.org Acked-by: Jakub Kicinski --- drivers/net/caif/caif_serial.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/caif/caif_serial.c b/drivers/net/caif/caif_serial.c index ed3a589def6b..e7d1b9301fde 100644 --- a/drivers/net/caif/caif_serial.c +++ b/drivers/net/caif/caif_serial.c @@ -344,7 +344,7 @@ static int ldisc_open(struct tty_struct *tty) ser->tty = tty_kref_get(tty); ser->dev = dev; debugfs_init(ser, tty); - tty->receive_room = N_TTY_BUF_SIZE; + tty->receive_room = 4096; tty->disc_data = ser; set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); rtnl_lock(); From patchwork Thu Feb 20 11:15:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867070 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E45401F76C0; Thu, 20 Feb 2025 11:16:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050182; cv=none; b=cFt2osVaDlJ5t/9kQUA4BYXxl6kWc0J+CrHlKO5MKk0HhAuEsVQRrZ/IuRhFSwhDZqZfrupw7CRf6j9gCbNz4SDkMsRaHuPsGhLwQEuPo2ZziqAZ2IWaQUWsEuMMh0oTaf4TG4xSYJsF7/S2T9oCEM6CFazcZuMW1nNt5Ye9RU8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050182; c=relaxed/simple; bh=g/xpmM3Fe7B6ZiGr/t3gDZeq/cT5LL/Gr4ylSKdLgr8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F3+aqsDTp6Ma36KlQWu3xpyXO9oGUNnlyLrCbL66WGMxyBGZDpF988XvB7BZNHs1Qbt4O1SmXRlNj4LxN8U2kvncOPTEDs1f3FEw1Qh349IVDUgL+a4KDa18z5NAkFqbYPkN6aNQm1pYNrkhlQ0kHQ2CdiNZpYUjxQvEUJRbeMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KT/otRUl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KT/otRUl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B4F23C4CED1; Thu, 20 Feb 2025 11:16:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050181; bh=g/xpmM3Fe7B6ZiGr/t3gDZeq/cT5LL/Gr4ylSKdLgr8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KT/otRUl/OfpRsrrQHV4MVEVEi0K/zCSmd8s+ENW+ma6hkc3OELGlNlfEBsXYd6f/ 6XRaADo29YtodxbyewD23+55qxTQByf5+CkCz7H52wixB+TEhcsubhp9b8MtcnFfdj v+wEZ8IQcJn6+YmpD+1kNOzEZ0PALTvrH0Lh1BQnx6s8FCVVq3lgMC2cOnwGJ9BbKg 2RtBcvfEuE40wV2egx6okO9f4EuPWKeT/k1P3YjOdsyrzthH/jDC5UpbAblikckghe atVJiGKHYO5TAGQ9UY2OQaukG5ccxxHaOJg/tcklxZKEtjUIoyVIifpLQOeA2nMeDs AzyrJJruqeJWw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 05/29] tty: n_tty: use uint for space returned by tty_write_room() Date: Thu, 20 Feb 2025 12:15:42 +0100 Message-ID: <20250220111606.138045-6-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 tty_write_room() returns an "unsigned int". So in case some insane driver (like my tty test driver) returns (legitimate) UINT_MAX from its tty_operations::write_room(), n_tty is confused on several places. For example, in process_output_block(), the result of tty_write_room() is stored into (signed) "int". So this UINT_MAX suddenly becomes -1. And that is extended to ssize_t and returned from process_output_block(). This causes a write() to such a node to receive -EPERM (which is -1). Fix that by using proper "unsigned int" and proper "== 0" test. And return 0 constant directly in that "if", so that it is immediately clear what is returned ("space" equals to 0 at that point). Similarly for process_output() and __process_echoes(). Note this does not fix any in-tree driver as of now. If you want "Fixes: something", it would be commit 03b3b1a2405c ("tty: make tty_operations::write_room return uint"). I intentionally do not mark this patch by a real tag below. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 2c5995019dd1..765d24268d75 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -488,7 +488,8 @@ static int do_output_char(u8 c, struct tty_struct *tty, int space) static int process_output(u8 c, struct tty_struct *tty) { struct n_tty_data *ldata = tty->disc_data; - int space, retval; + unsigned int space; + int retval; mutex_lock(&ldata->output_lock); @@ -524,16 +525,16 @@ static ssize_t process_output_block(struct tty_struct *tty, const u8 *buf, unsigned int nr) { struct n_tty_data *ldata = tty->disc_data; - int space; - int i; + unsigned int space; + int i; const u8 *cp; mutex_lock(&ldata->output_lock); space = tty_write_room(tty); - if (space <= 0) { + if (space == 0) { mutex_unlock(&ldata->output_lock); - return space; + return 0; } if (nr > space) nr = space; @@ -698,7 +699,7 @@ static int n_tty_process_echo_ops(struct tty_struct *tty, size_t *tail, static size_t __process_echoes(struct tty_struct *tty) { struct n_tty_data *ldata = tty->disc_data; - int space, old_space; + unsigned int space, old_space; size_t tail; u8 c; From patchwork Thu Feb 20 11:15:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867069 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1957E1F9406; Thu, 20 Feb 2025 11:16:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050185; cv=none; b=WIBR5pEDH7aPQpreX72e1d6g6etrEIrxxTSHlB5p3KpOR4USq51BRhxlzbeownsKZAboYcXsvPiJoPbtv5veTOaLTwzuhDDLpu127heRsIaRqH45pLFjlSTOvpJT7LMp7saXL2Wk1t2vvascT524Wjc82NZ1i1VK2izTsvQxqoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050185; c=relaxed/simple; bh=9R/axZV7gpmcyf96eMWRUh493VM9wPytpd/Af5AfIDg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b0RuWsxiICLvced/28jyLfsgIOkthENVCAPcJ693PzyG3zACU+w94+7fT0MPMQhjpNzRaA2Z3DvfBpWsHbyjYGwfKpjsj/2B8VOTlRTJ6bTpp291OpP0kWj+wlLgrffNGFRWQOEvVGNT0FK3Y62CHNf2MUipsaW5viWfutmlg2w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fluI+Scy; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fluI+Scy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3EE0C4CEDD; Thu, 20 Feb 2025 11:16:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050184; bh=9R/axZV7gpmcyf96eMWRUh493VM9wPytpd/Af5AfIDg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fluI+ScyyM2JROMH6Flyi2SllHZ4MQOJq/Ra0mHGuohHf0ISCUCwybxUkvWtbXVgB JF/+I/L40BPcTx0bVMM0qTCCD292f3vd84YyvoJEBQyMNbwcw4t4xqKz600EeDEC/4 DyqePSDnP2jMkgjexb3l9p/dwCn2aZei8LHp6vQDQo166r9fw19+3PTu6nm4a3ujuq dTXlTfVx8o1ByJ2ZwhLPtuFUTZ8zqr93XJnD2SZEE/RHF9rrRhGq5BR4HFn5aG2e0C B6x8akhXbklqGL5nXObEAIVzDimhMfot+uzBPOqpI7/NX5yoW7lKay2f5VZRA69aKA /4U7jOvhempFw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 07/29] tty: n_tty: clean up process_output_block() Date: Thu, 20 Feb 2025 12:15:44 +0100 Message-ID: <20250220111606.138045-8-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 * Use guard(mutex), which results in: - the function can return directly when "space == 0". - "i" can now be "unsigned" as it is no longer abused to hold a retval from tty->ops->write(). Note the compared-to "nr" is already "unsigned". * The end label is now dubbed "do_write" as that is what happens there. Unlike the uncertain "break_out" name. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index df52aae5f71a..5d172edbb03c 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -519,17 +519,15 @@ static ssize_t process_output_block(struct tty_struct *tty, const u8 *buf, unsigned int nr) { struct n_tty_data *ldata = tty->disc_data; - unsigned int space; - int i; + unsigned int space, i; const u8 *cp; - mutex_lock(&ldata->output_lock); + guard(mutex)(&ldata->output_lock); space = tty_write_room(tty); - if (space == 0) { - mutex_unlock(&ldata->output_lock); + if (space == 0) return 0; - } + if (nr > space) nr = space; @@ -541,18 +539,18 @@ static ssize_t process_output_block(struct tty_struct *tty, if (O_ONLRET(tty)) ldata->column = 0; if (O_ONLCR(tty)) - goto break_out; + goto do_write; ldata->canon_column = ldata->column; break; case '\r': if (O_ONOCR(tty) && ldata->column == 0) - goto break_out; + goto do_write; if (O_OCRNL(tty)) - goto break_out; + goto do_write; ldata->canon_column = ldata->column = 0; break; case '\t': - goto break_out; + goto do_write; case '\b': if (ldata->column > 0) ldata->column--; @@ -560,18 +558,15 @@ static ssize_t process_output_block(struct tty_struct *tty, default: if (!iscntrl(c)) { if (O_OLCUC(tty)) - goto break_out; + goto do_write; if (!is_continuation(c, tty)) ldata->column++; } break; } } -break_out: - i = tty->ops->write(tty, buf, i); - - mutex_unlock(&ldata->output_lock); - return i; +do_write: + return tty->ops->write(tty, buf, i); } static int n_tty_process_echo_ops(struct tty_struct *tty, size_t *tail, From patchwork Thu Feb 20 11:15:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867068 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FFE21FAC4C; Thu, 20 Feb 2025 11:16:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050188; cv=none; b=N1UrA42KWO2mFMMlczVZgnckG0vSQRBvfqX8jkcnvJkg5+nGHQZ3H13b9V6bWqCQgbwBWjq3CiXo9ChvvQofARPAmFWrdu2gN7s1bCWXeI/EpUhNR7yo+w6NRe6ouJvDEG2kyS8J1cGLyaXDFe8UGevWxwP8a1Wcjx7X7O5CUOA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050188; c=relaxed/simple; bh=qhyJ5nurd/KtDfxYFGukXboD8bJm+cxcpPMnMsiAeBs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JlTgaTp07BPL/zLTdRfqfurxZrXHnrnyobf/WoexmU1XRGEW8cbhjBbq1ZweAJWF5IAZsRXAzNVdbCTIQtx/J4fIdzT3pgCsQLGauJC1xMloltCTsKdeNX1C6qJdEdf3BIB7BL9GtXSE7hYJ35qFZiBMH3CzP8o0RmZwzDQoMas= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=q3L20lp/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="q3L20lp/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CF68BC4CEE3; Thu, 20 Feb 2025 11:16:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050187; bh=qhyJ5nurd/KtDfxYFGukXboD8bJm+cxcpPMnMsiAeBs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q3L20lp/DyVHCn3x9pgSw1hKsQqgbruu1gxEhQAU0SOUEvqGxA7hE8UFRgjZgSUyG td4V8ed9pn4UBpijGxO3aKNb5zpZxE5lqOVnTOJuBp73CtipZ7vVdM+SIbshhp+SZ6 qABzigljUvpjKt/MODuySnNdZWNym9ifNOWKheSbV42LfTLvI/bP65d0VMx9CgZkFl 5nZTkq/xO6TmwaQ6AtoVImlLY2Ees1vbMMVhpqipBcLsVY+b6A/oxCMEnmRG2q2WHc SUNG+5vv+1XrE2/i3/jJdESsaav4dYjLLE18iLCcut2cf7bG6anh+5wC8PiiaDOy00 KPimNJ+chGzfg== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 09/29] tty: n_tty: extract n_tty_continue_cookie() from n_tty_read() Date: Thu, 20 Feb 2025 12:15:46 +0100 Message-ID: <20250220111606.138045-10-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 n_tty_read() is a very long function doing too much of different stuff. Extract the "cookie" (continuation read) handling to a separate function: n_tty_continue_cookie(). Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 66 ++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 43ba740792d9..88aa5f9cbe5e 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -2111,6 +2111,39 @@ static int job_control(struct tty_struct *tty, struct file *file) return __tty_check_change(tty, SIGTTIN); } +/* + * We still hold the atomic_read_lock and the termios_rwsem, and can just + * continue to copy data. + */ +static ssize_t n_tty_continue_cookie(struct tty_struct *tty, u8 *kbuf, + size_t nr, void **cookie) +{ + struct n_tty_data *ldata = tty->disc_data; + u8 *kb = kbuf; + + if (ldata->icanon && !L_EXTPROC(tty)) { + /* + * If we have filled the user buffer, see if we should skip an + * EOF character before releasing the lock and returning done. + */ + if (!nr) + canon_skip_eof(ldata); + else if (canon_copy_from_read_buf(tty, &kb, &nr)) + return kb - kbuf; + } else { + if (copy_from_read_buf(tty, &kb, &nr)) + return kb - kbuf; + } + + /* No more data - release locks and stop retries */ + n_tty_kick_worker(tty); + n_tty_check_unthrottle(tty); + up_read(&tty->termios_rwsem); + mutex_unlock(&ldata->atomic_read_lock); + *cookie = NULL; + + return kb - kbuf; +} /** * n_tty_read - read function for tty @@ -2144,36 +2177,9 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf, bool packet; size_t old_tail; - /* - * Is this a continuation of a read started earler? - * - * If so, we still hold the atomic_read_lock and the - * termios_rwsem, and can just continue to copy data. - */ - if (*cookie) { - if (ldata->icanon && !L_EXTPROC(tty)) { - /* - * If we have filled the user buffer, see - * if we should skip an EOF character before - * releasing the lock and returning done. - */ - if (!nr) - canon_skip_eof(ldata); - else if (canon_copy_from_read_buf(tty, &kb, &nr)) - return kb - kbuf; - } else { - if (copy_from_read_buf(tty, &kb, &nr)) - return kb - kbuf; - } - - /* No more data - release locks and stop retries */ - n_tty_kick_worker(tty); - n_tty_check_unthrottle(tty); - up_read(&tty->termios_rwsem); - mutex_unlock(&ldata->atomic_read_lock); - *cookie = NULL; - return kb - kbuf; - } + /* Is this a continuation of a read started earlier? */ + if (*cookie) + return n_tty_continue_cookie(tty, kbuf, nr, cookie); retval = job_control(tty, file); if (retval < 0) From patchwork Thu Feb 20 11:15:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867067 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7397C1FCD06; Thu, 20 Feb 2025 11:16:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050191; cv=none; b=pBnxc9gCSUQ1lReYsYncOUVCdrIpF2pcNlcRKW2L79pKCXvOSXr09KQ8ERJxXfLxAurKHJi1hUSj3MVQwDuX1C8n+8lR2vRHSXzW7anu+AqnNgrWRClImZL3yWuky6EujnjK5ZE7h+bVl/sib0KZrnt/TP20Ky6je2yjipPtDSo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050191; c=relaxed/simple; bh=eZR2IzG2EDLv4boMcni4nYVHvs/shsHiMBi5yS6eQcM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KMNaUo2Bloqb0c8HBQpG9kz1HbIKVkxeIDsAiCX7C8BuFY8SOEU2ilRKvepmHBx76XMYcaxGjG042QVWei7XGa/RY8WvYfb0PBOMT+9bOWAqgFb5A5UehFyQUvWpF4R1rYdfe8/nhwIAB3M7+hy06bqmDTkNjKxgiAsyExEzluU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=E3B1U8uD; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="E3B1U8uD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA6E1C4CED1; Thu, 20 Feb 2025 11:16:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050191; bh=eZR2IzG2EDLv4boMcni4nYVHvs/shsHiMBi5yS6eQcM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E3B1U8uDDGHLFJNG/zVu/sfqQOJrVA/t9h1RlntwMVx9EzM+2Rt7MhqUpqYYypfPZ hbg/M0LmAA2fKtaGFnEpVosywX4+PfaH3thdfN3R4ZRn9MJXJ/g8nKK8/wHF0/WPIb RikdIP5hvo199kzKpmIT1EGhIitVHsKdnllsCOWKKed1Q0QbJOHedBYrchLG4KqgDf JFYrQIk2d9fzwrcO5RQAlg8vvZqI9hfg752ry/Yjq6xYSN8ZR75C6E4wGyy34c6xQm iTYVYz3hw3f1X8V7QkfvZsiIs1Y8qJOJpBgSaAK7sj9k4qQxqCQOj0+7rgSXMTgksa tiKer8JtZmClw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 11/29] tty: n_tty: move more_to_be_read to the end of n_tty_read() Date: Thu, 20 Feb 2025 12:15:48 +0100 Message-ID: <20250220111606.138045-12-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 n_tty_read() contains "we need more data" handling deep in that function. And there is also a label (more_to_be_read) as we handle this situation from two places. It makes more sense to have all "return"s accumulated at the end of functions. And "goto" from multiple places there. Therefore, do this with the "more_to_be_read" label in n_tty_read(). After this and the previous changes, n_tty_read() is now much more easier to follow. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/n_tty.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index 0e3eb18490f0..6af3f3a0b531 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c @@ -2281,21 +2281,8 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf, nr--; } - /* - * Copy data, and if there is more to be had - * and we have nothing more to wait for, then - * let's mark us for retries. - * - * NOTE! We return here with both the termios_sem - * and atomic_read_lock still held, the retries - * will release them when done. - */ - if (copy_from_read_buf(tty, &kb, &nr) && kb - kbuf >= minimum) { -more_to_be_read: - remove_wait_queue(&tty->read_wait, &wait); - *cookie = cookie; - return kb - kbuf; - } + if (copy_from_read_buf(tty, &kb, &nr) && kb - kbuf >= minimum) + goto more_to_be_read; } n_tty_check_unthrottle(tty); @@ -2322,6 +2309,18 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf, retval = kb - kbuf; return retval; +more_to_be_read: + /* + * There is more to be had and we have nothing more to wait for, so + * let's mark us for retries. + * + * NOTE! We return here with both the termios_sem and atomic_read_lock + * still held, the retries will release them when done. + */ + remove_wait_queue(&tty->read_wait, &wait); + *cookie = cookie; + + return kb - kbuf; } /** From patchwork Thu Feb 20 11:15:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867066 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 205A71FDA94; Thu, 20 Feb 2025 11:16:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050194; cv=none; b=kMbuhfp4v4mOVuxmXVmaoxKdbao7GY1mE3J06npJIsxmr31wq/oaT1rbQizE2kA9+KKqYf5DQjcZFiaxTdg3yUrhfLMNekIUBltJRY6zvlD3Q5MRP42TJFtcJcpvCuc/dthnfE+eKmCAxgR/H4Z16DrcRBrZir7ZiynNrnJ7kYc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050194; c=relaxed/simple; bh=zOOO9DB53BwVwmkA70kTsG+ATH7ViZTlm6u+KsTETy4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cqgJWrJXfvAjWRychs7g2f6m7+q0mKpNfVhG2p3L+foXfmW5yVjH9BpWECXy991mj2oih/K2rhy37c6+VAYm76gdGT7d4KvoSAdOgXFVoS47YlpDrfEWscdS5dox3nSADjY3qlqS7amTCLcLHQlJUWd0AmcwCG12gnrx5vh6adU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f2p1F0OC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="f2p1F0OC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5A5BC4CEE4; Thu, 20 Feb 2025 11:16:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050194; bh=zOOO9DB53BwVwmkA70kTsG+ATH7ViZTlm6u+KsTETy4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=f2p1F0OC+O0qquknUbcikCULXrX3cNliYz4+9MvhEwf0S+VU0WfN5oFK0HK1efPx7 R4cKSkjvoWbcgLUzW+QvfVhqR6PDDz9qqP0qNrAiM4l2G5spc1XEj+mjvuMW0A+oX8 wcXd2sPqDBDAut7B2OSlh7wkfAskOwZjC64NH29wpBnlsjawC0znWWGieX++nT+pjV j33uclDGWqRQR/IwY40OOsMHyPQAZK+QkpVBBqW7UPhdxoMljaG3ffKOfGVy0EATwR tlWRHzbQrRbDONvjeBhg/OW5tXmcIs5Ot/m2TShFuP9Xys2bN2ldD67ahyeGC60jm3 HFGzl9RMsWrmw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 13/29] tty: tty_driver: convert "TTY Driver Flags" to an enum Date: Thu, 20 Feb 2025 12:15:50 +0100 Message-ID: <20250220111606.138045-14-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Convert TTY_DRIVER_* macros (flags) to an enum. This allows for easier kernel-doc (the comment needed fine tuning), grouping of these nicely, and proper checking. Given these are flags, define them using modern BIT() instead of hex constants. It turns out (thanks, kernel-doc checker) that internal TTY_DRIVER_INSTALLED was undocumented. Fix that too. Signed-off-by: Jiri Slaby (SUSE) --- Documentation/driver-api/tty/tty_driver.rst | 2 +- include/linux/tty_driver.h | 40 ++++++++++++--------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/Documentation/driver-api/tty/tty_driver.rst b/Documentation/driver-api/tty/tty_driver.rst index cc529f863406..f6cbffdb6e01 100644 --- a/Documentation/driver-api/tty/tty_driver.rst +++ b/Documentation/driver-api/tty/tty_driver.rst @@ -35,7 +35,7 @@ Here comes the documentation of flags accepted by tty_alloc_driver() (or __tty_alloc_driver()): .. kernel-doc:: include/linux/tty_driver.h - :doc: TTY Driver Flags + :identifiers: tty_driver_flag ---- diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index f3be6d56e9e5..d0d940236580 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -17,13 +17,19 @@ struct serial_icounter_struct; struct serial_struct; /** - * DOC: TTY Driver Flags + * enum tty_driver_flag -- TTY Driver Flags * - * TTY_DRIVER_RESET_TERMIOS + * These are flags passed to tty_alloc_driver(). + * + * @TTY_DRIVER_INSTALLED: + * Whether this driver was succesfully installed. This is a tty internal + * flag. Do not touch. + * + * @TTY_DRIVER_RESET_TERMIOS: * Requests the tty layer to reset the termios setting when the last * process has closed the device. Used for PTYs, in particular. * - * TTY_DRIVER_REAL_RAW + * @TTY_DRIVER_REAL_RAW: * Indicates that the driver will guarantee not to set any special * character handling flags if this is set for the tty: * @@ -35,7 +41,7 @@ struct serial_struct; * this case if this flag is set. (Note that there is also a promise, if * the above case is true, not to signal overruns, either.) * - * TTY_DRIVER_DYNAMIC_DEV + * @TTY_DRIVER_DYNAMIC_DEV: * The individual tty devices need to be registered with a call to * tty_register_device() when the device is found in the system and * unregistered with a call to tty_unregister_device() so the devices will @@ -45,33 +51,35 @@ struct serial_struct; * appear and disappear while the main tty driver is registered with the * tty core. * - * TTY_DRIVER_DEVPTS_MEM + * @TTY_DRIVER_DEVPTS_MEM: * Don't use the standard arrays (&tty_driver.ttys and * &tty_driver.termios), instead use dynamic memory keyed through the * devpts filesystem. This is only applicable to the PTY driver. * - * TTY_DRIVER_HARDWARE_BREAK + * @TTY_DRIVER_HARDWARE_BREAK: * Hardware handles break signals. Pass the requested timeout to the * &tty_operations.break_ctl instead of using a simple on/off interface. * - * TTY_DRIVER_DYNAMIC_ALLOC + * @TTY_DRIVER_DYNAMIC_ALLOC: * Do not allocate structures which are needed per line for this driver * (&tty_driver.ports) as it would waste memory. The driver will take * care. This is only applicable to the PTY driver. * - * TTY_DRIVER_UNNUMBERED_NODE + * @TTY_DRIVER_UNNUMBERED_NODE: * Do not create numbered ``/dev`` nodes. For example, create * ``/dev/ttyprintk`` and not ``/dev/ttyprintk0``. Applicable only when a * driver for a single tty device is being allocated. */ -#define TTY_DRIVER_INSTALLED 0x0001 -#define TTY_DRIVER_RESET_TERMIOS 0x0002 -#define TTY_DRIVER_REAL_RAW 0x0004 -#define TTY_DRIVER_DYNAMIC_DEV 0x0008 -#define TTY_DRIVER_DEVPTS_MEM 0x0010 -#define TTY_DRIVER_HARDWARE_BREAK 0x0020 -#define TTY_DRIVER_DYNAMIC_ALLOC 0x0040 -#define TTY_DRIVER_UNNUMBERED_NODE 0x0080 +enum tty_driver_flag { + TTY_DRIVER_INSTALLED = BIT(0), + TTY_DRIVER_RESET_TERMIOS = BIT(1), + TTY_DRIVER_REAL_RAW = BIT(2), + TTY_DRIVER_DYNAMIC_DEV = BIT(3), + TTY_DRIVER_DEVPTS_MEM = BIT(4), + TTY_DRIVER_HARDWARE_BREAK = BIT(5), + TTY_DRIVER_DYNAMIC_ALLOC = BIT(6), + TTY_DRIVER_UNNUMBERED_NODE = BIT(7), +}; /* tty driver types */ #define TTY_DRIVER_TYPE_SYSTEM 0x0001 From patchwork Thu Feb 20 11:15:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867065 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A07C1FECD1; Thu, 20 Feb 2025 11:16:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050197; cv=none; b=TBzdJGeh3HPfMEMe8pHp053+6UXq7BzhbqOyUL2FQX1FVBotOVs2N2IAChUVEA5Ngc6IjcX9J+M9VzC9UTWRLnBdZgF/oyFGx7NJkMcytXv2u7K3M75zX36TQETSYLmt490AUNj5nPPqpG+gTekcsKzxTS5oNGL9ORvwMCQ4l84= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050197; c=relaxed/simple; bh=eym0iQyZ+wC53dbebkT2FnQUWTN2XX6Qz6fKjwQmFOQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RpLF3kq0bBvTLrHLnCXzChDDTP/ZouZl588TQTpTDTp6Na1ZUCT4/VrGkwCc4n4+mWdXaGTc7wkhEjL3eAI1c93KfDOQBLGlreD9yyrQp9SCnYG6kF0lFaRSm9rA4ncrU1eeiV3TEPT4VxrNRCz4ih7kYGYZamTZvwuersO7orU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uGLp12yw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uGLp12yw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F068FC4CED1; Thu, 20 Feb 2025 11:16:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050197; bh=eym0iQyZ+wC53dbebkT2FnQUWTN2XX6Qz6fKjwQmFOQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uGLp12ywQpgZg5ui/tq14M64m7BPtmF4oidyguOsr2I2tOh/VQdmR5Z105lSCleDB e71P7Ye/HJ0FikeRAfheun9nEbjK+OgK0D3UUUKvtLoQ0dMW13CrfolDa9Woqa/Z4I /GsnBLMJ+Hh5p6ZBx4wdsk8WfRQkSirwwZBTE2rKE8/5irt7vQo7MwFAG3itRMlcY8 mdUTGVXAdJoQ9e2JUrM25NAncmKV+tvzAA9uKoyhwunpSXndV3pJQ7tVzUo9AOkRgy VXBFtvZ22UtNm3zIdrNuxfZWx32CUjUPIpMQgTabIyFGOR7c0gidiMdBm58cPw+7ol YgRZqU1GYxzhA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 15/29] tty: tty_driver: introduce TTY driver sub/types enums Date: Thu, 20 Feb 2025 12:15:52 +0100 Message-ID: <20250220111606.138045-16-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Convert TTY_DRIVER_TYPE_*, and subtype macros to two enums: tty_driver_type and tty_driver_subtype. This allows for easier kernel-doc (later), grouping of these nicely, and proper checking. The tty_driver's ::type and ::subtype now use these enums instead of bare "short". Signed-off-by: Jiri Slaby (SUSE) --- include/linux/tty_driver.h | 42 +++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index 0fe38befa1b8..188ee9b768eb 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -81,26 +81,26 @@ enum tty_driver_flag { TTY_DRIVER_UNNUMBERED_NODE = BIT(7), }; -/* tty driver types */ -#define TTY_DRIVER_TYPE_SYSTEM 0x0001 -#define TTY_DRIVER_TYPE_CONSOLE 0x0002 -#define TTY_DRIVER_TYPE_SERIAL 0x0003 -#define TTY_DRIVER_TYPE_PTY 0x0004 -#define TTY_DRIVER_TYPE_SCC 0x0005 /* scc driver */ -#define TTY_DRIVER_TYPE_SYSCONS 0x0006 +enum tty_driver_type { + TTY_DRIVER_TYPE_SYSTEM, + TTY_DRIVER_TYPE_CONSOLE, + TTY_DRIVER_TYPE_SERIAL, + TTY_DRIVER_TYPE_PTY, + TTY_DRIVER_TYPE_SCC, + TTY_DRIVER_TYPE_SYSCONS, +}; -/* system subtypes (magic, used by tty_io.c) */ -#define SYSTEM_TYPE_TTY 0x0001 -#define SYSTEM_TYPE_CONSOLE 0x0002 -#define SYSTEM_TYPE_SYSCONS 0x0003 -#define SYSTEM_TYPE_SYSPTMX 0x0004 +enum tty_driver_subtype { + SYSTEM_TYPE_TTY = 1, + SYSTEM_TYPE_CONSOLE, + SYSTEM_TYPE_SYSCONS, + SYSTEM_TYPE_SYSPTMX, -/* pty subtypes (magic, used by tty_io.c) */ -#define PTY_TYPE_MASTER 0x0001 -#define PTY_TYPE_SLAVE 0x0002 + PTY_TYPE_MASTER = 1, + PTY_TYPE_SLAVE, -/* serial subtype definitions */ -#define SERIAL_TYPE_NORMAL 1 + SERIAL_TYPE_NORMAL = 1, +}; /** * struct tty_operations -- interface between driver and tty @@ -500,8 +500,8 @@ struct tty_operations { * @major: major /dev device number (zero for autoassignment) * @minor_start: the first minor /dev device number * @num: number of devices allocated - * @type: type of tty driver (%TTY_DRIVER_TYPE_) - * @subtype: subtype of tty driver (%SYSTEM_TYPE_, %PTY_TYPE_, %SERIAL_TYPE_) + * @type: type of tty driver (enum tty_driver_type) + * @subtype: subtype of tty driver (enum tty_driver_subtype) * @init_termios: termios to set to each tty initially (e.g. %tty_std_termios) * @flags: tty driver flags (%TTY_DRIVER_) * @proc_entry: proc fs entry, used internally @@ -533,8 +533,8 @@ struct tty_driver { int major; int minor_start; unsigned int num; - short type; - short subtype; + enum tty_driver_type type; + enum tty_driver_subtype subtype; struct ktermios init_termios; unsigned long flags; struct proc_dir_entry *proc_entry; From patchwork Thu Feb 20 11:15:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867064 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 65AAF1FFC4F; Thu, 20 Feb 2025 11:16:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050200; cv=none; b=p+btkPJw/uW7kdNZWVWedJMMeaa2vGBw0sPWJZkWhPys5nmGYcrYhgcurAayzUNgkR17X9OfFVgLRlA/lPion4LD8OcrkoAVAhesNjYdGB/C/VmqxBdO5+4vxAIgNQwoSuX8tYlXyxGkPS828XApPmx1nNARIll5iqZ/4pfHWn4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050200; c=relaxed/simple; bh=NWefyehqTC8N6b5xJiLn3iRSos/mZcw/xFIo2yDlpOs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QyPqVo+fPnIZB4jv+ETcktUAo2NhEeS1/fMqodc31j2J/9+ue6PNpYyTMSTKIPTKe2wjezMeO4eT2hmqNZ+D3ePelPli4RWmUHfng6vTu88MVf67Jp3hW5TlMFvZ/RNDWxjQM4bdw7AEd9F2pOWU+SJvq5tJBR1rXZbUEDsqzwc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=d+AuI4q8; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="d+AuI4q8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 35A3AC4CEDD; Thu, 20 Feb 2025 11:16:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050200; bh=NWefyehqTC8N6b5xJiLn3iRSos/mZcw/xFIo2yDlpOs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d+AuI4q89zRzHYvZKnA0A1KQUxLMHXe/CtY/lXvz7YbAfeL0TYbb25yrtC3DV07My MNW0ThwxC/pLdSl1Qdvv7XiXzRfpFDNK8tnh+ymnGizdJrRtSjClaae7RJaAYYbaXx wXMJkgn3btlNqiqCbgbcx3TS2Pf8cKomHeBKD3lckwEqyZ9OmAz9zZJUDPbkBjtDbM xVRkRj1idQ1fBGP4db56ITWK1YrU/qXVgldfXeatPMgaHC0C5qHpD1uc4uekBPRhcu Gw9qYQv02ZWcqiqxOjgYZ6q0s8lioubiF4cdijnGyHqO1T6xSHFai8d3GwCadIuc3A PPJTu/Eg/1EGg== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 17/29] tty: moxa: drop version dump to logs Date: Thu, 20 Feb 2025 12:15:54 +0100 Message-ID: <20250220111606.138045-18-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The arbitrary MOXA_VERSION is dumped to the logs when the driver is loaded. Avoid this as a driver should be silent unless something breaks. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/moxa.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c index ebaada8db929..2b75ca12cbc9 100644 --- a/drivers/tty/moxa.c +++ b/drivers/tty/moxa.c @@ -347,8 +347,6 @@ #define MX_PARMARK 0xA0 #define MX_PARSPACE 0x20 -#define MOXA_VERSION "6.0k" - #define MOXA_FW_HDRLEN 32 #define MOXAMAJOR 172 @@ -1327,9 +1325,6 @@ static int __init moxa_init(void) struct moxa_board_conf *brd = moxa_boards; unsigned int i; - printk(KERN_INFO "MOXA Intellio family driver version %s\n", - MOXA_VERSION); - tty_port_init(&moxa_service_port); moxaDriver = tty_alloc_driver(MAX_PORTS + 1, From patchwork Thu Feb 20 11:15:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867063 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 709341F3B8A; Thu, 20 Feb 2025 11:16:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050203; cv=none; b=DUR4eNa46qIW/9Ra8xI0WMCLwJobFetHpstowa9ThVu8QLk9eqzVgMP3BKePEsBdDxgXHI9031vY7KMn+daBbh5eM3dy6dOxUhfsaNCXFhHCFEIB4ytCl9y28BSHyI6EzCTntC4wEoaW7HTzgge8J50stV2PQHJZghRzlgm1I7A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050203; c=relaxed/simple; bh=Nzn39Gj0zDV8oO5kv9Dt85bKRYqHcU7BvP/2szVpfw8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YU7E9kEWWzhovbccETFCXpFxtU0ekKj1UdNblNxWmhHHLm3du0AzZaMMP4gwuGRjfS1trZ1tsuCJRYlaG52m2WlsEPn5ucWSnJDrB2RI+1ejrOw7THK5pi8clJF5bU/b8tN1JSpBdP+So9c/yrPwHN4uzer/dZkVbY89BoPPdK0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VTUW7V4F; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VTUW7V4F" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 41A5AC4CEE4; Thu, 20 Feb 2025 11:16:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050203; bh=Nzn39Gj0zDV8oO5kv9Dt85bKRYqHcU7BvP/2szVpfw8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VTUW7V4F02DLH1GSJEnrerkTin2mCYVLJykjPHpW9UVOvJHtAc24pCQdUnYZb0MOc a+SwTuRo2B/mpZNh8XJedi+GsfrK3zSMx/m/vx7Le3qnxDIwpnY1P7WH3aKQQXxi+J hDYEAAVfGxCbN82yBKN16oG1hYVBkn5FMmMIQIvPyBs9An8w+BwuqIeVELzTNH+jGK 6XStAuxaHfcDKkv2xCrIB3SwcMZG7Hi1dlu1FRZz+DK5oS5CfFgQUpQFsbxF7B6EOy gp4QqJUOvjEoPPlVCTupyBwWfJnPN/CEnvmX3OmbSmJ3ll2TFODWmN5WSpFSadIlia 02ONDp9LjERRA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 19/29] tty: moxa: carve out special ioctls and extra tty_port Date: Thu, 20 Feb 2025 12:15:56 +0100 Message-ID: <20250220111606.138045-20-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 These ioctls are undocumented and not exposed -- they are defined locally. Given they need a special tty_port just for them, this is very ugly. So drop this whole functionality. It is barely used for something real. (And if it is, we'd need a common functionality to all drivers.) Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/moxa.c | 146 +-------------------------------------------- 1 file changed, 1 insertion(+), 145 deletions(-) diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c index a753afcb53b5..1348e2214b81 100644 --- a/drivers/tty/moxa.c +++ b/drivers/tty/moxa.c @@ -43,15 +43,6 @@ #include #include -#include - -#define MOXA 0x400 -#define MOXA_GET_IQUEUE (MOXA + 1) /* get input buffered count */ -#define MOXA_GET_OQUEUE (MOXA + 2) /* get output buffered count */ -#define MOXA_GETDATACOUNT (MOXA + 23) -#define MOXA_GET_IOQUEUE (MOXA + 27) -#define MOXA_FLUSH_QUEUE (MOXA + 28) -#define MOXA_GETMSTATUS (MOXA + 65) /* * System Configuration @@ -397,19 +388,6 @@ static struct moxa_board_conf { void __iomem *intTable; } moxa_boards[MAX_BOARDS]; -struct mxser_mstatus { - tcflag_t cflag; - int cts; - int dsr; - int ri; - int dcd; -}; - -struct moxaq_str { - int inq; - int outq; -}; - struct moxa_port { struct tty_port port; struct moxa_board_conf *board; @@ -424,12 +402,6 @@ struct moxa_port { u8 lowChkFlag; }; -struct mon_str { - int tick; - int rxcnt[MAX_PORTS]; - int txcnt[MAX_PORTS]; -}; - /* statusflags */ #define TXSTOPPED 1 #define LOWWAIT 2 @@ -439,14 +411,11 @@ struct mon_str { #define WAKEUP_CHARS 256 static int ttymajor = MOXAMAJOR; -static struct mon_str moxaLog; static unsigned int moxaFuncTout = HZ / 2; static unsigned int moxaLowWaterChk; static DEFINE_MUTEX(moxa_openlock); static DEFINE_SPINLOCK(moxa_lock); -static struct tty_port moxa_service_port; - MODULE_AUTHOR("William Chen"); MODULE_DESCRIPTION("MOXA Intellio Family Multiport Board Device Driver"); MODULE_LICENSE("GPL"); @@ -557,104 +526,6 @@ static void moxa_low_water_check(void __iomem *ofsAddr) * TTY operations */ -static int moxa_ioctl(struct tty_struct *tty, - unsigned int cmd, unsigned long arg) -{ - struct moxa_port *ch = tty->driver_data; - void __user *argp = (void __user *)arg; - int status, ret = 0; - - if (tty->index == MAX_PORTS) { - if (cmd != MOXA_GETDATACOUNT && cmd != MOXA_GET_IOQUEUE && - cmd != MOXA_GETMSTATUS) - return -EINVAL; - } else if (!ch) - return -ENODEV; - - switch (cmd) { - case MOXA_GETDATACOUNT: - moxaLog.tick = jiffies; - if (copy_to_user(argp, &moxaLog, sizeof(moxaLog))) - ret = -EFAULT; - break; - case MOXA_FLUSH_QUEUE: - MoxaPortFlushData(ch, arg); - break; - case MOXA_GET_IOQUEUE: { - struct moxaq_str __user *argm = argp; - struct moxaq_str tmp; - struct moxa_port *p; - unsigned int i, j; - - for (i = 0; i < MAX_BOARDS; i++) { - p = moxa_boards[i].ports; - for (j = 0; j < MAX_PORTS_PER_BOARD; j++, p++, argm++) { - memset(&tmp, 0, sizeof(tmp)); - spin_lock_bh(&moxa_lock); - if (moxa_boards[i].ready) { - tmp.inq = MoxaPortRxQueue(p); - tmp.outq = MoxaPortTxQueue(p); - } - spin_unlock_bh(&moxa_lock); - if (copy_to_user(argm, &tmp, sizeof(tmp))) - return -EFAULT; - } - } - break; - } case MOXA_GET_OQUEUE: - status = MoxaPortTxQueue(ch); - ret = put_user(status, (unsigned long __user *)argp); - break; - case MOXA_GET_IQUEUE: - status = MoxaPortRxQueue(ch); - ret = put_user(status, (unsigned long __user *)argp); - break; - case MOXA_GETMSTATUS: { - struct mxser_mstatus __user *argm = argp; - struct mxser_mstatus tmp; - struct moxa_port *p; - unsigned int i, j; - - for (i = 0; i < MAX_BOARDS; i++) { - p = moxa_boards[i].ports; - for (j = 0; j < MAX_PORTS_PER_BOARD; j++, p++, argm++) { - struct tty_struct *ttyp; - memset(&tmp, 0, sizeof(tmp)); - spin_lock_bh(&moxa_lock); - if (!moxa_boards[i].ready) { - spin_unlock_bh(&moxa_lock); - goto copy; - } - - status = MoxaPortLineStatus(p); - spin_unlock_bh(&moxa_lock); - - if (status & 1) - tmp.cts = 1; - if (status & 2) - tmp.dsr = 1; - if (status & 4) - tmp.dcd = 1; - - ttyp = tty_port_tty_get(&p->port); - if (!ttyp) - tmp.cflag = p->cflag; - else - tmp.cflag = ttyp->termios.c_cflag; - tty_kref_put(ttyp); -copy: - if (copy_to_user(argm, &tmp, sizeof(tmp))) - return -EFAULT; - } - } - break; - } - default: - ret = -ENOIOCTLCMD; - } - return ret; -} - static int moxa_break_ctl(struct tty_struct *tty, int state) { struct moxa_port *port = tty->driver_data; @@ -671,7 +542,6 @@ static const struct tty_operations moxa_ops = { .write_room = moxa_write_room, .flush_buffer = moxa_flush_buffer, .chars_in_buffer = moxa_chars_in_buffer, - .ioctl = moxa_ioctl, .set_termios = moxa_set_termios, .stop = moxa_stop, .start = moxa_start, @@ -1283,9 +1153,7 @@ static int __init moxa_init(void) { int retval = 0; - tty_port_init(&moxa_service_port); - - moxaDriver = tty_alloc_driver(MAX_PORTS + 1, + moxaDriver = tty_alloc_driver(MAX_PORTS, TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV); if (IS_ERR(moxaDriver)) @@ -1301,8 +1169,6 @@ static int __init moxa_init(void) moxaDriver->init_termios.c_ispeed = 9600; moxaDriver->init_termios.c_ospeed = 9600; tty_set_operations(moxaDriver, &moxa_ops); - /* Having one more port only for ioctls is ugly */ - tty_port_link_device(&moxa_service_port, moxaDriver, MAX_PORTS); if (tty_register_driver(moxaDriver)) { printk(KERN_ERR "can't register MOXA Smartio tty driver!\n"); @@ -1362,9 +1228,6 @@ static int moxa_open(struct tty_struct *tty, struct file *filp) int port; port = tty->index; - if (port == MAX_PORTS) { - return capable(CAP_SYS_ADMIN) ? 0 : -EPERM; - } if (mutex_lock_interruptible(&moxa_openlock)) return -ERESTARTSYS; brd = &moxa_boards[port / MAX_PORTS_PER_BOARD]; @@ -2087,7 +1950,6 @@ static ssize_t MoxaPortWriteData(struct tty_struct *tty, const u8 *buffer, c = (head > tail) ? (head - tail - 1) : (head - tail + tx_mask); if (c > len) c = len; - moxaLog.txcnt[port->port.tty->index] += c; total = c; if (spage == epage) { bufhead = readw(ofsAddr + Ofs_txb); @@ -2129,7 +1991,6 @@ static ssize_t MoxaPortWriteData(struct tty_struct *tty, const u8 *buffer, static int MoxaPortReadData(struct moxa_port *port) { - struct tty_struct *tty = port->port.tty; void __iomem *baseAddr, *ofsAddr, *ofs; u8 *dst; unsigned int count, len, total; @@ -2148,7 +2009,6 @@ static int MoxaPortReadData(struct moxa_port *port) return 0; total = count; - moxaLog.rxcnt[tty->index] += total; if (spage == epage) { bufhead = readw(ofsAddr + Ofs_rxb); writew(spage, baseAddr + Control_reg); @@ -2236,8 +2096,6 @@ static int moxa_get_serial_info(struct tty_struct *tty, { struct moxa_port *info = tty->driver_data; - if (tty->index == MAX_PORTS) - return -EINVAL; if (!info) return -ENODEV; mutex_lock(&info->port.mutex); @@ -2257,8 +2115,6 @@ static int moxa_set_serial_info(struct tty_struct *tty, struct moxa_port *info = tty->driver_data; unsigned int close_delay; - if (tty->index == MAX_PORTS) - return -EINVAL; if (!info) return -ENODEV; From patchwork Thu Feb 20 11:15:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867062 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F24D820F062; Thu, 20 Feb 2025 11:16:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050208; cv=none; b=XxzZkHDq7Bpala8lEV/kOpC4BVFdcCv4UlJCJFVnDH+HOlzFkNuVWUXdRuaLUif4p2324Y0wnfHKYzmIHLgoHfLrm6zMzN3fphCyI1xbPJoWC5lV5nd43YmwtOWSbhgshrbiE40b5x5+qStptHxGCilvghUzVByk0c6Oxmp3z+E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050208; c=relaxed/simple; bh=q06lJb7Uuv9M4Jo7kpt4iRsXe9J/IElgAndhhLU6hCE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XsA5/cztFFGpgMSRlyws0m+3MwTl8uy8DKg1qvwQEUTEtagKZtV0LLr20d1tAD4F71/O7wgU55mfWXOdZarTgn4P5YST9TY85KD8dZ4dPi2szRBHu3uP3RNP7YYyujejg95Wg9B8oDF5V1cbTpwvDfOMPASiSaXlbUJUvGbQUjQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FM0Rx13S; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FM0Rx13S" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D526CC4CED1; Thu, 20 Feb 2025 11:16:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050207; bh=q06lJb7Uuv9M4Jo7kpt4iRsXe9J/IElgAndhhLU6hCE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FM0Rx13Sebhc81c+tBWlFkcUyYPtfPmHAmp4XIhZ/iYgkyeG00jU1KeE6mbfyMfp+ Km/Zr8WcQowsJzgD5se/uJwHXaOrWD5BjX+gK704D1Wj3MPdElMOxGXPW9LZsLIqUR yvAKnAyBSBMxbQN9DeQJ5YalzTsqKtotdRbul3sbrHRyOAs9wBZyDa8vAUe8LQbtvu 94yR16gUdBQe7viUwM+29ItuLcDdL0YvdC64Td/5OI4MF0o4VfrCI66Vvqdlg8bGsB TwX1dj5TwGj8tLnXx+Tg8RmldtZztA7gNGlk9gxvdztaNnn9TBya1HxsnBqNCo1Lsc qikW9AZaaB3yw== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , David Lin , Johan Hovold , Alex Elder , greybus-dev@lists.linaro.org, linux-staging@lists.linux.dev Subject: [PATCH 21/29] tty: staging/greybus: pass tty_driver flags to tty_alloc_driver() Date: Thu, 20 Feb 2025 12:15:58 +0100 Message-ID: <20250220111606.138045-22-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 tty_alloc_driver() is supposed to receive tty driver flags. Signed-off-by: Jiri Slaby (SUSE) Cc: David Lin Cc: Johan Hovold Cc: Alex Elder Cc: greybus-dev@lists.linaro.org Cc: linux-staging@lists.linux.dev --- drivers/staging/greybus/uart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c index 8eab94cb06fa..308ed1ca9947 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -948,7 +948,8 @@ static int gb_tty_init(void) { int retval = 0; - gb_tty_driver = tty_alloc_driver(GB_NUM_MINORS, 0); + gb_tty_driver = tty_alloc_driver(GB_NUM_MINORS, TTY_DRIVER_REAL_RAW | + TTY_DRIVER_DYNAMIC_DEV); if (IS_ERR(gb_tty_driver)) { pr_err("Can not allocate tty driver\n"); retval = -ENOMEM; @@ -961,7 +962,6 @@ static int gb_tty_init(void) gb_tty_driver->minor_start = 0; gb_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; gb_tty_driver->subtype = SERIAL_TYPE_NORMAL; - gb_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; gb_tty_driver->init_termios = tty_std_termios; gb_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; From patchwork Thu Feb 20 11:16:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867061 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEA5A212B1F; Thu, 20 Feb 2025 11:16:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050211; cv=none; b=BibDw9QCkduzOiVajUUhtcFSj3gIQKR0sIwxaDN23iZiCSXDeJCwRuImo1JTL2ALfGl7NFf/B+rLI8WMk6cvKayXhvOewQ+oLVcSskfJhhd8Ws401RYkqMJPkeTycN6kE92aWPq9qpMXwGPSJ8WgFSiDIFTvjX8AZWQU14TXsV0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050211; c=relaxed/simple; bh=nZIkuJjMtnyrI9ew1aqrnJpKE9/wdKdxSn4kFieyw2c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y1UhE7kDcYQLTnm+7gbPU/qY6FsrfTdQOLgz8/FypPopHv6jMmOozkj5XaogzDqi2JTaaMJGK86/pT705BMWfd57PL1O7XQMTh/5GSHgimmv5pXICZm6k6YB4PTV/tb6DPCLe7PHwVsyO0XuhROMX1H6LSqlaRD9J+ZgmJNsVto= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VgQ/lWkG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VgQ/lWkG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 356C3C4CEE3; Thu, 20 Feb 2025 11:16:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050211; bh=nZIkuJjMtnyrI9ew1aqrnJpKE9/wdKdxSn4kFieyw2c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VgQ/lWkG9sGpiuSDUa3pXetNFATsu9YPLjw/2n3/XmGguMe6CLUr3L/fKDTvWvGMY yO4ltLQy5OeltFDudR9z3wmQI+fPCEGqJyieyFm1YhjjGS9taegzyDoDe/4t3BJvYZ qLN4GEuYAuqYFb937mMt7q/OopIQvZVYIXB+RJ30fKctMoFVt7xGY/QVihU/6OR4Qt pvGS/LgNl2Cq6bPOYKtByz6n0Fpr9P8mwjnB7zbDIxHNYw+gq3w84f6y4sL8NAZw8P 921l+qaPrJNn7o95ABm09dSpOCU525WMx4IPd0icHMEkVbtT18JdngoEcC2ZoGzPUI Ey4EnaV1VRkQQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" , "David S. Miller" , sparclinux@vger.kernel.org Subject: [PATCH 23/29] tty: sunsu: remove unused serial_icr_read() Date: Thu, 20 Feb 2025 12:16:00 +0100 Message-ID: <20250220111606.138045-24-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 It is commented and never used. Signed-off-by: Jiri Slaby (SUSE) Cc: "David S. Miller" Cc: sparclinux@vger.kernel.org --- drivers/tty/serial/sunsu.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c index 2dc68b3201a4..383141fe7ba0 100644 --- a/drivers/tty/serial/sunsu.c +++ b/drivers/tty/serial/sunsu.c @@ -159,20 +159,6 @@ static void serial_icr_write(struct uart_sunsu_port *up, int offset, int value) serial_out(up, UART_ICR, value); } -#if 0 /* Unused currently */ -static unsigned int serial_icr_read(struct uart_sunsu_port *up, int offset) -{ - unsigned int value; - - serial_icr_write(up, UART_ACR, up->acr | UART_ACR_ICRRD); - serial_out(up, UART_SCR, offset); - value = serial_in(up, UART_ICR); - serial_icr_write(up, UART_ACR, up->acr); - - return value; -} -#endif - #ifdef CONFIG_SERIAL_8250_RSA /* * Attempts to turn on the RSA FIFO. Returns zero on failure. From patchwork Thu Feb 20 11:16:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867060 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D38DD1F583B; Thu, 20 Feb 2025 11:16:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050214; cv=none; b=XHdQLHvtgMHOX7yrQYVmtj7NDDfLtpBwPNpQOs74df4UG/t1Q1d8aBkV5gWmcG5hkmEZgj69l6tcghwQYGstWx9mAyFZ8WFPGZLbzSUKC4QUi1qVAY/BwuHQHB0yKTFLhBUQC7F6+PZH2jQPWTzf8pUGQN342v1YyoWqANjN4+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050214; c=relaxed/simple; bh=0qLHAAL+353m1Ju7cnS1kMjUN4v4Ya2R2cFuwY/DLvU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ooaUW6NmpU/+x/totXUjpRkPWOxZ4qpmDwQFAlOkt8G/86NMlH71tLJG9IEryPLTW7rf9g47VyHACFEow3VTSg/rSP5ZlVxlyaEz5ltbbRnOZ4wu4xk0oqi7DrnfEqPyGfyCl/7t2DMDtr2JrzUu+1pjcSIHZEitZOfj+Rsf5wA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rRlYCPHD; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rRlYCPHD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A5DD2C4CED1; Thu, 20 Feb 2025 11:16:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050214; bh=0qLHAAL+353m1Ju7cnS1kMjUN4v4Ya2R2cFuwY/DLvU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rRlYCPHDVmppWoly1Y0GQT5Ef5Agm6+dSC7J2/cvFqc4ZSxQ7+UiQVltohDS/Iezq pNxgCMDKQ2MjqMJ6gh1eVZ60jvav1vHiHUN5DCIFQhQeHKaXBMzH6LcL3eAXA/Rfet BnM//Shikh7GhiI1ILnZcweCNYqNk01ETET7RRxti/RP61DIwrySEzsH2LXjoH7Un4 /PaOHfXCvn4CiAXVXMyjy2HeIOB4cn5CaaXq/ALmOdc7IwUTGoLLNFZY+yvPJ8IuPY CjVlL/EnyT7LGwUmasPwAncK1dZusJqJo8PIQXIyJ2jeAQeeXA/c9bMeUr30FovUSd Z5r6Y0X7ObzTQ== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 25/29] serial: pass struct uart_state to uart_line_info() Date: Thu, 20 Feb 2025 12:16:02 +0100 Message-ID: <20250220111606.138045-26-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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) --- drivers/tty/serial/serial_core.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index 2a6453891801..04eaa24ed153 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -2013,9 +2013,8 @@ static const char *uart_type(struct uart_port *port) #ifdef CONFIG_PROC_FS -static void uart_line_info(struct seq_file *m, struct uart_driver *drv, int i) +static void uart_line_info(struct seq_file *m, struct uart_state *state) { - struct uart_state *state = drv->state + i; struct tty_port *port = &state->port; enum uart_pm_state pm_state; struct uart_port *uport; @@ -2100,7 +2099,7 @@ static int uart_proc_show(struct seq_file *m, void *v) seq_printf(m, "serinfo:1.0 driver%s%s revision:%s\n", "", "", ""); for (i = 0; i < drv->nr; i++) - uart_line_info(m, drv, i); + uart_line_info(m, drv->state + i); return 0; } #endif From patchwork Thu Feb 20 11:16:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867059 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 481FD213E7B; Thu, 20 Feb 2025 11:16:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050218; cv=none; b=IvkkcOgci+pi/1/X5tTLcJEVS34+Tf7HqlXZ6AmGMmEt7wMOIYazML57LO0hEGX7UXFkzia9RsEkxtUS8ZVhGuS+JeGD/jI2mVaMAVwW7Trm+Ygp6xiu86TYIvfXft6bDT6tIqc68yAHtQI3xV/9aojVtekPBam/o1YvjJQHPAo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050218; c=relaxed/simple; bh=IGzAUF8EE1dXcvd38v4OtwuOD4neh/Voi1jl6jZSCRM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nNw1MZ8JKrgp8qrLR9dTDxwZgkdWjyZ2MZ4AfDuQVbZN4yW5kObDx6UYZtACh22tAX0xhho7Cj9xd/rRj+mt6aQWAfru5q7BmE1Jd6ckkgflda0rjZgjT9fZXhGc5IZx47jj1J6bwYzEwC0cvD1yQAvesP/KjwxMSjQNkU5+mdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ARkkX2GA; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ARkkX2GA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 17C89C4CEDD; Thu, 20 Feb 2025 11:16:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050218; bh=IGzAUF8EE1dXcvd38v4OtwuOD4neh/Voi1jl6jZSCRM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ARkkX2GAACaWzLK4e5Du4JcoS2M1eAVSjvf4ctniB+H05B9ihhVKLDKItjKWFuDac 9lqOVyJLJCWUFz+5jGSB1kxOsJC6804TkHGWLpqkgHH74oG97vRM0HdNGk3Url6oKe +jOOPA1iF0Ojx/rdgUUV1a2p9vl0rl3AwhiZ155w7sugBzm5kqsD+ebPZrMkP60OjL VDO/foN1eBL/xoFsy9q7kDASkclpnc2aEgguNjeYWJN+LZPS5XMY738187JapMHRsM xOM14Q0NasC1fFwu8g2rIU9qcJi+Yy0w8uVqi8Il+5QgH5hviDsDfp8os8mzAmKsRO CSIz29ZxokmvA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 27/29] serial: 8250_rsa: simplify rsa8250_{request/release}_resource() Date: Thu, 20 Feb 2025 12:16:04 +0100 Message-ID: <20250220111606.138045-28-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 * Use already defined 'port' for fetching start/offset, and size. * Return from the switch immediately -- so it is clear what is returned and when. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/serial/8250/8250_rsa.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/tty/serial/8250/8250_rsa.c b/drivers/tty/serial/8250/8250_rsa.c index dfaa613e452d..82f2593b4c59 100644 --- a/drivers/tty/serial/8250/8250_rsa.c +++ b/drivers/tty/serial/8250/8250_rsa.c @@ -16,30 +16,27 @@ static unsigned int probe_rsa_count; static int rsa8250_request_resource(struct uart_8250_port *up) { - unsigned long start = UART_RSA_BASE << up->port.regshift; - unsigned int size = 8 << up->port.regshift; struct uart_port *port = &up->port; - int ret = -EINVAL; + unsigned long start = UART_RSA_BASE << port->regshift; + unsigned int size = 8 << port->regshift; switch (port->iotype) { case UPIO_HUB6: case UPIO_PORT: start += port->iobase; - if (request_region(start, size, "serial-rsa")) - ret = 0; - else - ret = -EBUSY; - break; + if (!request_region(start, size, "serial-rsa")) + return -EBUSY; + return 0; + default: + return -EINVAL; } - - return ret; } static void rsa8250_release_resource(struct uart_8250_port *up) { - unsigned long offset = UART_RSA_BASE << up->port.regshift; - unsigned int size = 8 << up->port.regshift; struct uart_port *port = &up->port; + unsigned long offset = UART_RSA_BASE << port->regshift; + unsigned int size = 8 << port->regshift; switch (port->iotype) { case UPIO_HUB6: From patchwork Thu Feb 20 11:16:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiri Slaby \(SUSE\)" X-Patchwork-Id: 867058 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C1C63214202; Thu, 20 Feb 2025 11:17:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050221; cv=none; b=AEdynTniCwSEz99zYD5e9tL3BVKMhAo4+22xs1NvIYnRB0ExUSM1Gz60W0RYR//teRJCP5O8wYbH9mYHYO0RQWlm6vFioaiofuP6AP3ki27C8p3Of3bJQk/q2IpQxqQTMGeKbn8xdYd2E7sYZ9p1fvSUWuVST1SV651hEMRm8Us= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740050221; c=relaxed/simple; bh=+OYhCfT+9b/1AYLBMmVjAFt2OwPjTFnmUdRU9VwqAXw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eP3nJKRlROhKcjVqa1PGknvpN+WakCwfNk2YyiGG4VcsI6ij385yDLj+Pfs79jf9Dt1TEabc07QHK9qLkvWT0bcjN2T+VkYRhuMYG+ip2d3pm1KAx4gz3HfkScKZnO0YGU1o5xIAFf/e1ClhpNTmW78NWwpRwjPy2rfET/aMWus= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=k+hiskTP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="k+hiskTP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24F1EC4CEE3; Thu, 20 Feb 2025 11:16:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740050221; bh=+OYhCfT+9b/1AYLBMmVjAFt2OwPjTFnmUdRU9VwqAXw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k+hiskTPjYfYeeAOzQOZRXmrokWo8ZeMM0WQJO2LQSwzPz7Hkwjn3YBZkr3FZ/NuM 5T0+nXBk5eOFcZCPq3Set7+HDM4kjsNVFQgjgnNpbOpSjfTAfMLTNZFynJ9ujubYc2 sKXNONRKGwSKCZiC4wIctLW/DENknqvuRiFIROYg3r3vR/gw3uE/RCfblhdMGSNjfj MM/aADyihIGnQNqmhJp1YYKQODw2zZjvg8jeHqAJJciR5XBvUU4R0eCx/EO4sDNTV8 FzzX5sLBxoXY/inNRR+F/oPRcJVdLaPoMopOPOWt+5SUJkNjiiwGgwWKlWV7+KpYT/ oV9e6Q1F21ShA== From: "Jiri Slaby (SUSE)" To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, "Jiri Slaby (SUSE)" Subject: [PATCH 29/29] serial: 8250_port: simplify serial8250_request_std_resource() Date: Thu, 20 Feb 2025 12:16:06 +0100 Message-ID: <20250220111606.138045-30-jirislaby@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250220111606.138045-1-jirislaby@kernel.org> References: <20250220111606.138045-1-jirislaby@kernel.org> Precedence: bulk X-Mailing-List: linux-serial@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Return immediately from the error locations or switch-case ends. It is therefore easier to see the flow. Signed-off-by: Jiri Slaby (SUSE) --- drivers/tty/serial/8250/8250_port.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 4ac5f16fc6ba..caf4e2ec74bd 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -2966,7 +2966,6 @@ static int serial8250_request_std_resource(struct uart_8250_port *up) { unsigned int size = serial8250_port_size(up); struct uart_port *port = &up->port; - int ret = 0; switch (port->iotype) { case UPIO_AU: @@ -2975,32 +2974,28 @@ static int serial8250_request_std_resource(struct uart_8250_port *up) case UPIO_MEM32BE: case UPIO_MEM16: case UPIO_MEM: - if (!port->mapbase) { - ret = -EINVAL; - break; - } + if (!port->mapbase) + return -EINVAL; - if (!request_mem_region(port->mapbase, size, "serial")) { - ret = -EBUSY; - break; - } + if (!request_mem_region(port->mapbase, size, "serial")) + return -EBUSY; if (port->flags & UPF_IOREMAP) { port->membase = ioremap(port->mapbase, size); if (!port->membase) { release_mem_region(port->mapbase, size); - ret = -ENOMEM; + return -ENOMEM; } } - break; - + return 0; case UPIO_HUB6: case UPIO_PORT: if (!request_region(port->iobase, size, "serial")) - ret = -EBUSY; - break; + return -EBUSY; + return 0; } - return ret; + + return 0; } static void serial8250_release_std_resource(struct uart_8250_port *up)