Commit Graph

376 Commits

Author SHA1 Message Date
Rafael Aquini 800fb8128b tty, proc, kernfs, random: Use copy_splice_read()
JIRA: https://issues.redhat.com/browse/RHEL-27742

This patch is a backport of the following upstream commit:
commit b0072734ffaa3f5fec64058d0d3333765d789bc0
Author: David Howells <dhowells@redhat.com>
Date:   Mon May 22 14:49:59 2023 +0100

    tty, proc, kernfs, random: Use copy_splice_read()

    Use copy_splice_read() for tty, procfs, kernfs and random files rather
    than going through generic_file_splice_read() as they just copy the file
    into the output buffer and don't splice pages.  This avoids the need for
    them to have a ->read_folio() to satisfy filemap_splice_read().

    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    cc: Christoph Hellwig <hch@lst.de>
    cc: Jens Axboe <axboe@kernel.dk>
    cc: Al Viro <viro@zeniv.linux.org.uk>
    cc: John Hubbard <jhubbard@nvidia.com>
    cc: David Hildenbrand <david@redhat.com>
    cc: Matthew Wilcox <willy@infradead.org>
    cc: Miklos Szeredi <miklos@szeredi.hu>
    cc: Arnd Bergmann <arnd@arndb.de>
    cc: linux-block@vger.kernel.org
    cc: linux-fsdevel@vger.kernel.org
    cc: linux-mm@kvack.org
    Link: https://lore.kernel.org/r/20230522135018.2742245-13-dhowells@redhat.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Rafael Aquini <raquini@redhat.com>
2024-09-05 20:35:54 -04:00
Desnes Nunes e165c25833 usb: cdc-acm: return correct error code on unsupported break
JIRA: https://issues.redhat.com/browse/RHEL-34114

commit 66aad7d8d3ec5a3a8ec2023841bcec2ded5f65c9
Author: Oliver Neukum <oneukum@suse.com>
Date: Thu, 7 Dec 2023 14:26:30 +0100

  In ACM support for sending breaks to devices is optional.
  If a device says that it doenot support sending breaks,
  the host must respect that.
  Given the number of optional features providing tty operations
  for each combination is not practical and errors need to be
  returned dynamically if unsupported features are requested.

  In case a device does not support break, we want the tty layer
  to treat that like it treats drivers that statically cannot
  support sending a break. It ignores the inability and does nothing.
  This patch uses EOPNOTSUPP to indicate that.

  Signed-off-by: Oliver Neukum <oneukum@suse.com>
  Fixes: 9e98966c7b ("tty: rework break handling")
  Link: https://lore.kernel.org/r/20231207132639.18250-1-oneukum@suse.com
  Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Desnes Nunes <desnesn@redhat.com>
2024-05-20 13:28:46 -03:00
Andrew Halaney 524e5fa8d5 tty: sysfs: Add nbcon support for 'active'
JIRA: https://issues.redhat.com/browse/RHEL-3987
Upstream Status: https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/

commit f7c7d363a090290896487e4d0a03f391fb77e16b
Author: John Ogness <john.ogness@linutronix.de>
Date:   Fri Sep 22 14:31:09 2023 +0000

    tty: sysfs: Add nbcon support for 'active'

    Allow the 'active' attribute to list nbcon consoles.

    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:26:27 -04:00
Andrew Halaney ca5019bcc3 tty: whitespaces in descriptions corrected by replacing tabs with spaces
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 838eb763c3e939a8de8d4c55a17ddcce737685c1
Author: Florian Eckert <fe@dev.tdt.de>
Date:   Thu Oct 19 13:28:07 2023 +0200

    tty: whitespaces in descriptions corrected by replacing tabs with spaces

    Tabs were used in the function description, to make this look more
    uniform, the tabs were replaced by spaces where necessary.

    While we're at it, I also replaced the 'ndashes' with simple dashes, since
    only those are supported by sphinx.

    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Florian Eckert <fe@dev.tdt.de>
    Link: https://lore.kernel.org/r/20231019112809.881730-2-fe@dev.tdt.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:26:16 -04:00
Andrew Halaney 49fc75febc tty: use 'if' in send_break() instead of 'goto'
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 24f2cd019946fc2e88e632d2e24a34c2cc3f2be4
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Tue Sep 19 10:51:56 2023 +0200

    tty: use 'if' in send_break() instead of 'goto'

    Now, the "jumped-over" code is simple enough to be put inside an 'if'.
    Do so to make it 'goto'-less.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230919085156.1578-16-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:26:13 -04:00
Andrew Halaney d5a8a55d1d tty: don't check for signal_pending() in send_break()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit fd99392b643b824813df2edbaebe26a2136d31e6
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Tue Sep 19 10:51:55 2023 +0200

    tty: don't check for signal_pending() in send_break()

    msleep_interruptible() will check on its own. So no need to do the check
    in send_break() before calling the above.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230919085156.1578-15-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:26:13 -04:00
Andrew Halaney 5b79a7ae87 tty: early return from send_break() on TTY_DRIVER_HARDWARE_BREAK
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 66619686d187b4a6395316b7f39881e945dce4bc
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Tue Sep 19 10:51:54 2023 +0200

    tty: early return from send_break() on TTY_DRIVER_HARDWARE_BREAK

    If the driver sets TTY_DRIVER_HARDWARE_BREAK, we leave ops->break_ctl()
    to the driver and return from send_break(). But we do it using a local
    variable and keep the code flowing through the end of the function.
    Instead, do 'return' immediately with the ops->break_ctl()'s return
    value.

    This way, we don't have to stuff the 'else' branch of the 'if' with the
    software break handling. And we can re-indent the function too.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230919085156.1578-14-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:26:13 -04:00
Andrew Halaney 984cc36506 tty: stop using ndash in kernel-doc
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit c38f45ef5fe223671949622eba12918e8f41ffcf
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Tue Sep 19 10:51:51 2023 +0200

    tty: stop using ndash in kernel-doc

    An ndash used instead of a single dash renders a bullet to the result.
    So use only single dashes in kernel-doc.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230919085156.1578-11-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:26:12 -04:00
Andrew Halaney f7a17ed881 tty: use min() for size computation in iterate_tty_read()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 48a6ab8867eff61fa11d9e8f8e1c7327b135e689
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Thu Aug 10 11:15:00 2023 +0200

    tty: use min() for size computation in iterate_tty_read()

    The computation is more obvious with min().

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230810091510.13006-27-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:57 -04:00
Andrew Halaney 20c04e3050 tty: switch size and count types in iterate_tty_read() to size_t
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit e3afc5b0d708e2ef389b9c7acd45d1e4fd2cb304
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Thu Aug 10 11:14:59 2023 +0200

    tty: switch size and count types in iterate_tty_read() to size_t

    ld->ops->read() returns ssize_t. copy_to_iter() returns size_t. So
    switch the variables ('size' and 'copied', respectively) to the
    corresponding types.

    This allows for use of min() in the next patch.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230810091510.13006-26-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:57 -04:00
Andrew Halaney 5257a87b94 tty: use ssize_t for iterate_tty_read() returned type
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 24b01c5d497ba422f34d381a693d0592e95ad5c3
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Thu Aug 10 11:14:58 2023 +0200

    tty: use ssize_t for iterate_tty_read() returned type

    tty_read() is supposed to return ssize_t. It takes the return value from
    iterate_tty_read(). That currently returns int. On the top of that,
    iterate_tty_write() already returns ssize_t. So switch
    iterate_tty_read() to ssize_t too, so that all three are consistent.

    This means 'i' in tty_read() changes its type too. And while changing
    that, rename this generic 'i' to more dedicated 'ret'.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230810091510.13006-25-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:57 -04:00
Andrew Halaney c7ebfa98bb tty: use min() in iterate_tty_write()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit ccc8dc00a24bb657b6a6f8adbfbb535365b4ba3d
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Thu Aug 10 11:14:57 2023 +0200

    tty: use min() in iterate_tty_write()

    It simplifies the code. The "price" is we have to unify 'chunk' to be
    size_t the same as 'count' is. But that change is actually correct.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230810091510.13006-24-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:56 -04:00
Andrew Halaney b1f504d8bd tty: rename and de-inline do_tty_write()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit a32a672dc5aaec1ccd246b3a27cee8a367b822c1
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Thu Aug 10 11:14:56 2023 +0200

    tty: rename and de-inline do_tty_write()

    Make do_tty_write()'s name sound similar to iterate_tty_read(). They
    both do similar things, so there is no reason for so distinct names. The
    new name is therefore iterate_tty_write().

    Drop the unnedeed inline modifier too. Let the compiler decide.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230810091510.13006-23-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:56 -04:00
Andrew Halaney e7508f857f tty: don't pass write() to do_tty_write()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit f47a4fd67f2a803f205db7a4136571c2bd487297
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Thu Aug 10 11:14:55 2023 +0200

    tty: don't pass write() to do_tty_write()

    write() passed to do_tty_write() is always ld->ops->write(). Instead,
    align with iterate_tty_read() and pass the whole ld instead. This makes
    the code easier to follow as it is clear what the write is. And also the
    function signature is more readable.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230810091510.13006-22-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:56 -04:00
Andrew Halaney 34714f3398 tty: change tty_write_lock()'s ndelay parameter to bool
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit af815336556df28f800669c58ab3bdad7d786b98
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Thu Aug 10 11:14:39 2023 +0200

    tty: change tty_write_lock()'s ndelay parameter to bool

    It's a yes-no parameter, so convert it to bool to be obvious.

    Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230810091510.13006-6-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:55 -04:00
Andrew Halaney 29484a3745 tty: make check_tty_count() void
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit b4940f6c3e0e021a8612e8eee5d93ecba9ec9f32
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Wed Jul 12 10:58:30 2023 +0200

    tty: make check_tty_count() void

    The return value is unused, so drop it.

    Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20230712085830.4908-1-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:46 -04:00
Andrew Halaney a567a4f883 TIOCSTI: always enable for CAP_SYS_ADMIN
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 690c8b804ad2eafbd35da5d3c95ad325ca7d5061
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Mon Jul 10 02:26:45 2023 +0200

    TIOCSTI: always enable for CAP_SYS_ADMIN

    83efeeeb3d04 ("tty: Allow TIOCSTI to be disabled") broke BRLTTY's
    ability to simulate keypresses on the console, thus effectively breaking
    braille keyboards of blind users.

    This restores the TIOCSTI feature for CAP_SYS_ADMIN processes, which
    BRLTTY is, thus fixing braille keyboards without re-opening the security
    issue.

    Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Fixes: 83efeeeb3d04 ("tty: Allow TIOCSTI to be disabled")
    Cc: stable@vger.kernel.org
    Reported-by: Nicolas Pitre <nico@fluxnic.net>
    Link: https://lore.kernel.org/r/20230710002645.v565c7xq5iddruse@begin
    Acked-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:46 -04:00
Andrew Halaney 9a07bee4cf tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 094fb49a2d0d6827c86d2e0840873e6db0c491d2
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Fri Mar 17 13:33:17 2023 +0200

    tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH

    If userspace races tcsetattr() with a write, the drained condition
    might not be guaranteed by the kernel. There is a race window after
    checking Tx is empty before tty_set_termios() takes termios_rwsem for
    write. During that race window, more characters can be queued by a
    racing writer.

    Any ongoing transmission might produce garbage during HW's
    ->set_termios() call. The intent of TCSADRAIN/FLUSH seems to be
    preventing such a character corruption. If those flags are set, take
    tty's write lock to stop any writer before performing the lower layer
    Tx empty check and wait for the pending characters to be sent (if any).

    The initial wait for all-writers-done must be placed outside of tty's
    write lock to avoid deadlock which makes it impossible to use
    tty_wait_until_sent(). The write lock is retried if a racing write is
    detected.

    Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20230317113318.31327-2-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:38 -04:00
Andrew Halaney 15d8f34dd6 tty: simplify sysctl registration
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 6d12b774c9295a04695d52e38b1517e9a41f9881
Author: Luis Chamberlain <mcgrof@kernel.org>
Date:   Thu Mar 2 12:46:11 2023 -0800

    tty: simplify sysctl registration

    register_sysctl_table() is a deprecated compatibility wrapper.
    register_sysctl_init() can do the directory creation for you so just use
    that

    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Link: https://lore.kernel.org/r/20230302204612.782387-7-mcgrof@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:33 -04:00
Andrew Halaney 79d3b5d9e1 tty: fix out-of-bounds access in tty_driver_lookup_tty()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit db4df8e9d79e7d37732c1a1b560958e8dadfefa1
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Fri Dec 9 12:27:36 2022 +0100

    tty: fix out-of-bounds access in tty_driver_lookup_tty()

    When specifying an invalid console= device like console=tty3270,
    tty_driver_lookup_tty() returns the tty struct without checking
    whether index is a valid number.

    To reproduce:

    qemu-system-x86_64 -enable-kvm -nographic -serial mon:stdio \
    -kernel ../linux-build-x86/arch/x86/boot/bzImage \
    -append "console=ttyS0 console=tty3270"

    This crashes with:

    [    0.770599] BUG: kernel NULL pointer dereference, address: 00000000000000ef
    [    0.771265] #PF: supervisor read access in kernel mode
    [    0.771773] #PF: error_code(0x0000) - not-present page
    [    0.772609] Oops: 0000 [#1] PREEMPT SMP PTI
    [    0.774878] RIP: 0010:tty_open+0x268/0x6f0
    [    0.784013]  chrdev_open+0xbd/0x230
    [    0.784444]  ? cdev_device_add+0x80/0x80
    [    0.784920]  do_dentry_open+0x1e0/0x410
    [    0.785389]  path_openat+0xca9/0x1050
    [    0.785813]  do_filp_open+0xaa/0x150
    [    0.786240]  file_open_name+0x133/0x1b0
    [    0.786746]  filp_open+0x27/0x50
    [    0.787244]  console_on_rootfs+0x14/0x4d
    [    0.787800]  kernel_init_freeable+0x1e4/0x20d
    [    0.788383]  ? rest_init+0xc0/0xc0
    [    0.788881]  kernel_init+0x11/0x120
    [    0.789356]  ret_from_fork+0x22/0x30

    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20221209112737.3222509-2-svens@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:25 -04:00
Andrew Halaney 8be78b46ec tty: tty_io: use console_list_lock for list synchronization
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 7c2af0f634f1bc761ca827310dc7e8e586af502f
Author: John Ogness <john.ogness@linutronix.de>
Date:   Wed Nov 16 17:27:45 2022 +0106

    tty: tty_io: use console_list_lock for list synchronization

    show_cons_active() uses the console_lock to gather information
    on registered consoles. It requires that no consoles are unregistered
    until it is finished. The console_list_lock should be used because
    list synchronization responsibility will be removed from the
    console_lock in a later change.

    Note, the console_lock is still needed to serialize the device()
    callback with other console operations.

    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20221116162152.193147-34-john.ogness@linutronix.de

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:22 -04:00
Andrew Halaney 7d801f704e tty: tty_io: document console_lock usage
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit d25a2e748ae159e43d40f4bc0a9e89cc443e325f
Author: John Ogness <john.ogness@linutronix.de>
Date:   Wed Nov 16 17:27:21 2022 +0106

    tty: tty_io: document console_lock usage

    show_cons_active() uses the console_lock to gather information
    on registered consoles. Since the console_lock is being used for
    multiple reasons, explicitly document these reasons. This will
    be useful when the console_lock is split into fine-grained
    locking.

    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20221116162152.193147-10-john.ogness@linutronix.de

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:20 -04:00
Andrew Halaney 1207d03b8c tty: Move TIOCSTI toggle variable before kerndoc
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 5c30f3e4a6e67c88c979ad30554bf4ef9b24fbd0
Author: Kees Cook <keescook@chromium.org>
Date:   Sun Nov 6 19:46:35 2022 -0800

    tty: Move TIOCSTI toggle variable before kerndoc

    The variable "tty_legacy_tiocsti" should be defined before the kerndoc
    for the tiocsti() function. The new variable was breaking the "htmldocs"
    build target:

    drivers/tty/tty_io.c:2271: warning: cannot understand function prototype: 'bool tty_legacy_tiocsti __read_mostly = IS_ENABLED(CONFIG_LEGACY_TIOCSTI); '

    Fixes: 83efeeeb3d04 ("tty: Allow TIOCSTI to be disabled")
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Link: https://lore.kernel.org/lkml/20221107143434.66f7be35@canb.auug.org.au
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Acked-by: Randy Dunlap <rdunlap@infradead.org>
    Link: https://lore.kernel.org/r/20221107034631.never.637-kees@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:17 -04:00
Andrew Halaney ccf431be2c tty: Allow TIOCSTI to be disabled
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 83efeeeb3d04b22aaed1df99bc70a48fe9d22c4d
Author: Kees Cook <keescook@chromium.org>
Date:   Sat Oct 22 11:29:49 2022 -0700

    tty: Allow TIOCSTI to be disabled

    TIOCSTI continues its long history of being used in privilege escalation
    attacks[1]. Prior attempts to provide a mechanism to disable this have
    devolved into discussions around creating full-blown LSMs to provide
    arbitrary ioctl filtering, which is hugely over-engineered -- only
    TIOCSTI is being used this way. 3 years ago OpenBSD entirely removed
    TIOCSTI[2], Android has had it filtered for longer[3], and the tools that
    had historically used TIOCSTI either do not need it, are not commonly
    built with it, or have had its use removed.

    Provide a simple CONFIG and global sysctl to disable this for the system
    builders who have wanted this functionality for literally decades now,
    much like the ldisc_autoload CONFIG and sysctl.

    [1] https://lore.kernel.org/linux-hardening/Y0m9l52AKmw6Yxi1@hostpad
    [2] https://undeadly.org/cgi?action=article;sid=20170701132619
    [3] https://lore.kernel.org/lkml/CAFJ0LnFGRuEEn1tCLhoki8ZyWrKfktbF+rwwN7WzyC_kBFoQVA@mail.gmail.com/

    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Cc: Simon Brand <simon.brand@postadigitale.de>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20221022182949.2684794-2-keescook@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:11 -04:00
Andrew Halaney 91a41f9381 tty: Move sysctl setup into "core" tty logic
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 5fd8c2d3de3dd3cc6d36a0c7a08e44cd5bf173e6
Author: Kees Cook <keescook@chromium.org>
Date:   Sat Oct 22 11:29:48 2022 -0700

    tty: Move sysctl setup into "core" tty logic

    In preparation for adding another sysctl to the tty subsystem, move the
    tty setup code into the "core" tty code, which contains tty_init() itself.

    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20221022182949.2684794-1-keescook@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:11 -04:00
Andrew Halaney b873355aab tty: remove TTY_DRIVER_MAGIC
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 5052df99d3bc3cd281222bbcba44323b2d0937d2
Author: наб <nabijaczleweli@nabijaczleweli.xyz>
Date:   Fri Sep 16 03:55:05 2022 +0200

    tty: remove TTY_DRIVER_MAGIC

    According to Greg, in the context of magic numbers as defined in
    magic-number.rst, "the tty layer should not need this and I'll gladly
    take patches"

    Acked-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
    Ref: https://lore.kernel.org/linux-doc/YyMlovoskUcHLEb7@kroah.com/
    Link: https://lore.kernel.org/r/723478a270a3858f27843cbec621df4d5d44efcc.1663288066.git.nabijaczleweli@nabijaczleweli.xyz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:07 -04:00
Andrew Halaney b560818d56 tty: remove TTY_MAGIC
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 7a4e0d2c7fb8e28bb8ce0687925c9cf91d65f2a0
Author: наб <nabijaczleweli@nabijaczleweli.xyz>
Date:   Fri Sep 16 03:54:59 2022 +0200

    tty: remove TTY_MAGIC

    According to Greg, in the context of magic numbers as defined in
    magic-number.rst, "the tty layer should not need this and I'll gladly
    take patches"

    Acked-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
    Ref: https://lore.kernel.org/linux-doc/YyMlovoskUcHLEb7@kroah.com/
    Link: https://lore.kernel.org/r/476d024cd6b04160a5de381ea2b9856b60088cbd.1663288066.git.nabijaczleweli@nabijaczleweli.xyz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:07 -04:00
Andrew Halaney 99b4d626cb termios: start unifying non-UAPI parts of asm/termios.h
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit c9874d3ffeaf8ee215187692ed918b3031d996d1
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 16 11:47:53 2018 -0400

    termios: start unifying non-UAPI parts of asm/termios.h

    * new header (linut/termios_internal.h), pulled by the users of those
    suckers
    * defaults for INIT_C_CC and externs for conversion helpers moved over
    there
    * remove termios-base.h (empty now)

    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Link: https://lore.kernel.org/r/YxDmptU7dNGZ+/Hn@ZenIV
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:07 -04:00
Andrew Halaney 0266baaf21 tty: fix typos in comments
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit da1bb4ed23564f2937a4a3fa8d5ccdd0c167fe6a
Author: Julia Lawall <Julia.Lawall@inria.fr>
Date:   Sat May 21 13:11:45 2022 +0200

    tty: fix typos in comments

    Spelling mistakes (triple letters) in comments.
    Detected with the help of Coccinelle.

    Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
    Link: https://lore.kernel.org/r/20220521111145.81697-95-Julia.Lawall@inria.fr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:48 -04:00
Andrew Halaney d29976aea7 memcg: enable accounting for tty-related objects
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit c72d85923c62aa9d4e8c50d05189d9e116aa2628
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Tue Mar 22 14:41:41 2022 -0700

    memcg: enable accounting for tty-related objects

    At each login the user forces the kernel to create a new terminal and
    allocate up to ~1Kb memory for the tty-related structures.

    By default it's allowed to create up to 4096 ptys with 1024 reserve for
    initial mount namespace only and the settings are controlled by host
    admin.

    Though this default is not enough for hosters with thousands of
    containers per node.  Host admin can be forced to increase it up to
    NR_UNIX98_PTY_MAX = 1<<20.

    By default container is restricted by pty mount_opt.max = 1024, but
    admin inside container can change it via remount.  As a result, one
    container can consume almost all allowed ptys and allocate up to 1Gb of
    unaccounted memory.

    It is not enough per-se to trigger OOM on host, however anyway, it
    allows to significantly exceed the assigned memcg limit and leads to
    troubles on the over-committed node.

    It makes sense to account for them to restrict the host's memory
    consumption from inside the memcg-limited container.

    Link: https://lkml.kernel.org/r/5d4bca06-7d4f-a905-e518-12981ebca1b3@virtuozzo.com
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Shakeel Butt <shakeelb@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:35 -04:00
Andrew Halaney 3454438733 tty: add kernel-doc for tty_standard_install
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 31bc35d3346f24315c48ef8c92282c6c4f1bdd12
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Fri Nov 26 09:16:10 2021 +0100

    tty: add kernel-doc for tty_standard_install

    It is the only missing exported function which is not documented. Fix
    it.

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20211126081611.11001-23-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:23 -04:00
Andrew Halaney a4442e53f1 tty: add kernel-doc for more tty_driver functions
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 385812835431c9055362f453da6d59e7dfcde430
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Fri Nov 26 09:16:05 2021 +0100

    tty: add kernel-doc for more tty_driver functions

    The only documented function for tty_driver structure
    allocation/registration was __tty_alloc_driver(). Fix highlighting in
    that comment.

    And add kernel-doc headers to all tty_driver_kref_put(),
    tty_register_driver(), and tty_unregister_driver() -- i.e. the main
    ones. More to follow later.

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20211126081611.11001-18-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:23 -04:00
Andrew Halaney e009af79ca tty: reformat kernel-doc in tty_io.c
JIRA: https://issues.redhat.com/browse/RHEL-24205
Conflicts: Context diff due to
           5b29ff7759 ("tty: make tty_class a static const structure")

commit 796a75a98762f14006d2f941163b589f7ebcdf87
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Fri Nov 26 09:16:00 2021 +0100

    tty: reformat kernel-doc in tty_io.c

    Kernel-doc is a bit strict about some formatting. So fix these:
    1) When there is a tab in comments, it thinks the line is a continuation
       one. So the description of the functions end up as descriptions of
       the last parameter described. Remove the tabs.

    2) Remove newlines before parameters description and after the comments.
       This was not wrong per se, only inconsistent with the rest of the
       file.

    3) Add periods to the end of sentences where appropriate.

    4) Add "()" to function names and "%" to constants, so that they are
       properly highlighted.

    By the above, this patch also unifies these docs with the other
    kernel-doc's in this file.

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20211126081611.11001-13-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:23 -04:00
Andrew Halaney 347d5b96a2 tty: clean up whitespace in __do_SAK()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 954a0881a9d4f92bd645ebb06a5f939a19c82056
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Nov 18 08:19:10 2021 +0100

    tty: clean up whitespace in __do_SAK()

    Remove spaces before the 'i' variable declaration and wrap parameters of
    group_send_sig_info().

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20211118071911.12059-4-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:20 -04:00
Andrew Halaney f386764123 tty: remove tty NULL check from __do_SAK()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 8cb28417dd2ce46938fea9aca9f56fb1f7b1934a
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Nov 18 08:19:09 2021 +0100

    tty: remove tty NULL check from __do_SAK()

    Both do_SAK_work() and vc_SAK() provide a valid tty to __do_SAK(), so
    remove the check.

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20211118071911.12059-3-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:20 -04:00
Andrew Halaney 3da6357f9e tty: remove TTY_SOFT_SAK part from __do_SAK()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 463d4c74bffd7209914bf1eefb6d2fa991422863
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Nov 18 08:19:08 2021 +0100

    tty: remove TTY_SOFT_SAK part from __do_SAK()

    Remove the TTY_SOFT_SAK part. It is never defined, so this is only
    confusing.

    It was actually never defined since its introduction in
    0.99.14g.

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20211118071911.12059-2-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:20 -04:00
Andrew Halaney 13319902c7 tty: Fix data race between tiocsti() and flush_to_ldisc()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit bb2853a6a421a052268eee00fd5d3f6b3504b2b1
Author: Nguyen Dinh Phi <phind.uet@gmail.com>
Date:   Mon Aug 23 08:06:41 2021 +0800

    tty: Fix data race between tiocsti() and flush_to_ldisc()

    The ops->receive_buf() may be accessed concurrently from these two
    functions.  If the driver flushes data to the line discipline
    receive_buf() method while tiocsti() is waiting for the
    ops->receive_buf() to finish its work, the data race will happen.

    For example:
    tty_ioctl                       |tty_ldisc_receive_buf
     ->tioctsi                      | ->tty_port_default_receive_buf
                                    |  ->tty_ldisc_receive_buf
       ->hci_uart_tty_receive       |   ->hci_uart_tty_receive
        ->h4_recv                   |    ->h4_recv

    In this case, the h4 receive buffer will be overwritten by the
    latecomer, and we will lost the data.

    Hence, change tioctsi() function to use the exclusive lock interface
    from tty_buffer to avoid the data race.

    Reported-by: syzbot+97388eb9d31b997fe1d0@syzkaller.appspotmail.com
    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com>
    Link: https://lore.kernel.org/r/20210823000641.2082292-1-phind.uet@gmail.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:14 -04:00
Andrew Halaney 8811d387ee tty: drop put_tty_driver
JIRA: https://issues.redhat.com/browse/RHEL-24205
Conflicts: Minor context diffs, the replacement of put_tty_driver()
           with tty_driver_kref_put() doesn't depend on any of the
           context diffs to be correct.

commit 9f90a4ddef4e4d3aa4229f6b117d4e57231457b3
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Fri Jul 23 09:43:16 2021 +0200

    tty: drop put_tty_driver

    put_tty_driver() is an alias for tty_driver_kref_put(). There is no need
    for two exported identical functions, therefore switch all users of
    old put_tty_driver() to new tty_driver_kref_put() and remove the former
    for good.

    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Jeff Dike <jdike@addtoit.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
    Cc: Jens Taprogge <jens.taprogge@taprogge.org>
    Cc: Karsten Keil <isdn@linux-pingi.de>
    Cc: Scott Branden <scott.branden@broadcom.com>
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: David Lin <dtwlin@gmail.com>
    Cc: Johan Hovold <johan@kernel.org>
    Cc: Alex Elder <elder@kernel.org>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Cc: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: David Sterba <dsterba@suse.com>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: NXP Linux Team <linux-imx@nxp.com>
    Cc: Oliver Neukum <oneukum@suse.com>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: Mathias Nyman <mathias.nyman@intel.com>
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: Johan Hedberg <johan.hedberg@gmail.com>
    Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
    Acked-by: Alex Elder <elder@linaro.org>
    Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Acked-by: Max Filippov <jcmvbkbc@gmail.com>
    Acked-by: David Sterba <dsterba@suse.com>
    Acked-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20210723074317.32690-8-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:13 -04:00
Jan Stancek 151f2a0ce1 Merge: update drivers/base to v6.4
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/2940

JIRA: https://issues.redhat.com/browse/RHEL-1023

Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>

Approved-by: Phil Auld <pauld@redhat.com>
Approved-by: Tony Camuso <tcamuso@redhat.com>
Approved-by: Antoine Tenart <atenart@redhat.com>
Approved-by: Jocelyn Falempe <jfalempe@redhat.com>
Approved-by: Chris von Recklinghausen <crecklin@redhat.com>
Approved-by: Prarit Bhargava <prarit@redhat.com>
Approved-by: John W. Linville <linville@redhat.com>
Approved-by: Vladis Dronov <vdronov@redhat.com>
Approved-by: Donald Dutile <ddutile@redhat.com>
Approved-by: Eric Chanudet <echanude@redhat.com>

Signed-off-by: Jan Stancek <jstancek@redhat.com>
2023-11-19 13:07:01 +01:00
Mark Langsdorf 5b29ff7759 tty: make tty_class a static const structure
JIRA: https://issues.redhat.com/browse/RHEL-1023

commit 862d8312eed994a8a9af7aa8e9e15456183b10a7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Apr 2 19:58:50 2023 +0200

Now that the driver core allows for struct class to be in read-only
memory, move the tty_class structure to be declared at build time
placing it into read-only memory, instead of having to be dynamically
allocated at boot time.

Cc: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/2023040250-landowner-unfitted-11f4@gregkh
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2023-11-01 11:12:34 -05:00
Mark Langsdorf 094c7e2822 driver core: class: remove module * from class_create()
JIRA: https://issues.redhat.com/browse/RHEL-1023
Conflicts:
	drivers/dax/bus.c - had to remove an argument
by hand
	drivers/char/tpm/tpm-interface.c - minor context
differences

commit 1aaba11da9aa7d7d6b52a74d45b31cac118295a1
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: Fri, 17 Mar 2023 15:16:33 +0000

The module pointer in class_create() never actually did anything, and it
shouldn't have been requred to be set as a parameter even if it did
something.  So just remove it and fix up all callers of the function in
the kernel tree at the same time.

Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Link: https://lore.kernel.org/r/20230313181843.1207845-4-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2023-11-01 11:12:29 -05:00
Aristeu Rozanski 6dc92d35bd tty: tty_io: update timestamps on all device nodes
JIRA: https://issues.redhat.com/browse/RHEL-3902
Tested: by me

commit 360c11e2258ce4269441a5ab6d43d0b202f4261b
Author: Michal Sekletar <msekleta@redhat.com>
Date:   Tue Jun 13 19:21:06 2023 +0200

    tty: tty_io: update timestamps on all device nodes

    User space applications watch for timestamp changes on character device
    files in order to determine idle time of a given terminal session. For
    example, "w" program uses this information to populate the IDLE column
    of its output [1]. Similarly, systemd-logind has optional feature where
    it uses atime of the tty character device to determine if there was
    activity on the terminal associated with the logind's session object. If
    there was no activity for a configured period of time then logind will
    terminate such session [2].

    Now, usually (e.g. bash running on the terminal) the use of the terminal
    will update timestamps (atime and mtime) on the corresponding terminal
    character device. However, if access to the terminal, e.g. /dev/pts/0,
    is performed through magic character device /dev/tty then such access
    obviously changes the state of the terminal, however timestamps on the
    device that correspond to the terminal (/dev/pts/0) are not updated.

    This patch makes sure that we update timestamps on *all* character
    devices that correspond to the given tty, because outside observers (w,
    systemd-logind) are maybe checking these timestamps. Obviously, they can
    not check timestamps on /dev/tty as that has per-process meaning.

    [1] https://gitlab.com/procps-ng/procps/-/blob/v4.0.0/w.c#L286
    [2] https://github.com/systemd/systemd/blob/v252/NEWS#L477

    Signed-off-by: Michal Sekletar <msekleta@redhat.com>
    Message-ID: <20230613172107.78138-1-msekleta@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Aristeu Rozanski <arozansk@redhat.com>
2023-10-13 12:00:18 -04:00
David Arcari eeedb0472f driver core: make struct class.devnode() take a const *
Bugzilla: https://bugzilla.redhat.com/1898182
Conflicts: RHEL does not contain drivers/vdpa/vdpa_user
Omitted-fix: dcde56bb37a9 ("Fix mismerge due to devnode now taking a 'const *' device")
	     accel_devnode is not in RHEL

commit ff62b8e6588fb07bedda7423622c140c4edd66a7
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Nov 23 13:25:20 2022 +0100

    driver core: make struct class.devnode() take a const *

    The devnode() in struct class should not be modifying the device that is
    passed into it, so mark it as a const * and propagate the function
    signature changes out into all relevant subsystems that use this
    callback.

    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Reinette Chatre <reinette.chatre@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: x86@kernel.org
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Justin Sanders <justin@coraid.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Sumit Semwal <sumit.semwal@linaro.org>
    Cc: Benjamin Gaignard <benjamin.gaignard@collabora.com>
    Cc: Liam Mark <lmark@codeaurora.org>
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Brian Starkey <Brian.Starkey@arm.com>
    Cc: John Stultz <jstultz@google.com>
    Cc: "Christian König" <christian.koenig@amd.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: David Airlie <airlied@gmail.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Jason Gunthorpe <jgg@ziepe.ca>
    Cc: Leon Romanovsky <leon@kernel.org>
    Cc: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: Sean Young <sean@mess.org>
    Cc: Frank Haverkamp <haver@linux.ibm.com>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Cc: Cornelia Huck <cohuck@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Anton Vorontsov <anton@enomsg.org>
    Cc: Colin Cross <ccross@android.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Xie Yongji <xieyongji@bytedance.com>
    Cc: Gautam Dawar <gautam.dawar@xilinx.com>
    Cc: Dan Carpenter <error27@gmail.com>
    Cc: Eli Cohen <elic@nvidia.com>
    Cc: Parav Pandit <parav@nvidia.com>
    Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
    Cc: alsa-devel@alsa-project.org
    Cc: dri-devel@lists.freedesktop.org
    Cc: kvm@vger.kernel.org
    Cc: linaro-mm-sig@lists.linaro.org
    Cc: linux-block@vger.kernel.org
    Cc: linux-input@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-media@vger.kernel.org
    Cc: linux-rdma@vger.kernel.org
    Cc: linux-scsi@vger.kernel.org
    Cc: linux-usb@vger.kernel.org
    Cc: virtualization@lists.linux-foundation.org
    Link: https://lore.kernel.org/r/20221123122523.1332370-2-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: David Arcari <darcari@redhat.com>
2023-04-28 10:02:19 -04:00
Waiman Long 2b968410a3 tty: make tty_set_operations an inline
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2184097

commit cb9ea618ee60313d9278b2ba75f56da2531c8cac
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Fri, 23 Jul 2021 09:43:15 +0200

    tty: make tty_set_operations an inline

    Since commit f34d7a5b70 (tty: The big operations rework) in 2008,
    tty_set_operations() is a simple one-line assignment. There is no reason
    for this to be an exported function, hence move it to a header and make
    an inline from that.

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20210723074317.32690-7-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Waiman Long <longman@redhat.com>
2023-04-19 21:33:19 -04:00
Patrick Talbert c56b0cc2d5 Merge: Update bluetooth to upstream 5.17-rc5
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/652

Bugzilla: http://bugzilla.redhat.com/2066188

Depends: https://bugzilla.redhat.com/show_bug.cgi?id=2078759

Upstream status: Merged.

Testing: Minimally tested by me. Tried resume/suspend, connect, disconnect with Bluetooth mouse and headphone device.

Signed-off-by: Gopal Tiwari <gtiwari@redhat.com>

Approved-by: Jarod Wilson <jarod@redhat.com>
Approved-by: John W. Linville <linville@redhat.com>
Approved-by: Tony Camuso <tcamuso@redhat.com>

Signed-off-by: Patrick Talbert <ptalbert@redhat.com>
2022-06-03 09:26:19 +02:00
Torez Smith e14b7e3f47 tty: tty_io: Switch to vmalloc() fallback in case of TTY_NO_WRITE_SPLIT
Bugzilla: http://bugzilla.redhat.com/2061784
Brew: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=45014530
Tested: HP ZBook 15 G5/80D5 Laptop
 TGL-U(QS) Laptop

commit d6d9d17abac8d337ecb052b47e918ca9c0b4ba1b
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Dec 20 15:32:50 2021 +0200

    tty: tty_io: Switch to vmalloc() fallback in case of TTY_NO_WRITE_SPLIT

    When TTY_NO_WRITE_SPLIT is set and 64 KiB chunks are used, allow
    vmalloc() fallback. Supply __GFP_RETRY_MAYFAIL to make kmalloc()
    preferable over vmalloc() since we may want a better performance.

    Note, both current users copy data to another buffer anyway, so
    the type of our allocation doesn't affect their expectations.

    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20211220133250.3070-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Torez Smith <torez@redhat.com>
2022-05-02 15:30:31 -04:00
Gopal Tiwari 4558535265 tty: remove file from tty_ldisc_ops::ioctl and compat_ioctl
Bugzilla: http://bugzilla.redhat.com/2066188

commit d78328bcc4d0e677f2ff83f4ae1f43c933fbd143
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Mon Nov 22 10:45:29 2021 +0100

    tty: remove file from tty_ldisc_ops::ioctl and compat_ioctl

    After the previous patches, noone needs 'file' parameter in neither
    ioctl hook from tty_ldisc_ops. So remove 'file' from both of them.

    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: Johan Hedberg <johan.hedberg@gmail.com>
    Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
    Cc: Wolfgang Grandegger <wg@grandegger.com>
    Cc: Marc Kleine-Budde <mkl@pengutronix.de>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Andreas Koensgen <ajk@comnets.uni-bremen.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> [NFC]
    Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20211122094529.24171-1-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Gopal Tiwari <gtiwari@redhat.com>
2022-04-27 11:49:03 +05:30
Jiri Slaby d06e256f7a tty: fix kernel-doc for {start,stop}_tty
Commit f9e053dcfc (tty: Serialize tty flow control changes with
flow_lock) renamed start_tty to __start_tty and stop_tty to __stop_tty
and introduced new start_tty and stop_tty. But it left kernel-doc
comments on the old locations:
 tty_io.c:785: warning: expecting prototype for stop_tty(). Prototype was for __stop_tty() instead
 tty_io.c:816: warning: expecting prototype for start_tty(). Prototype was for __start_tty() instead

Fix that by moving the comments to appropriate locations.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210519072153.3859-4-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-20 16:59:14 +02:00
Jiri Slaby 756a4e4a7a tty: fix kernel-doc for tty_{read,write}
After commits a9cbbb80e3 (tty: avoid using vfs_iocb_iter_write() for
redirected console writes) and dd78b0c483 (tty: implement read_iter),
the tty_read and tty_write kernel-doc comments don't match the code:
 tty_io.c:931: warning: Function parameter or member 'iocb' not described in 'tty_read'
 tty_io.c:931: warning: Function parameter or member 'to' not described in 'tty_read'
 tty_io.c:931: warning: Excess function parameter 'file' description in 'tty_read'
 tty_io.c:931: warning: Excess function parameter 'buf' description in 'tty_read'
 tty_io.c:931: warning: Excess function parameter 'count' description in 'tty_read'
 tty_io.c:931: warning: Excess function parameter 'ppos' description in 'tty_read'
 tty_io.c:1115: warning: Function parameter or member 'iocb' not described in 'file_tty_write'
 tty_io.c:1115: warning: Function parameter or member 'from' not described in 'file_tty_write'
 tty_io.c:1115: warning: expecting prototype for tty_write(). Prototype was for file_tty_write() instead

Fix them to correspond the reality, i.e. the switch from read/write to
read_iter/write_iter.

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210519072153.3859-3-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-20 16:59:14 +02:00
Xiaofei Tan fab491030c tty: tty_io: Remove return in void function
Remove return in void function, reported by checkpatch.pl.

Signed-off-by: Xiaofei Tan <tanxiaofei@huawei.com>
Link: https://lore.kernel.org/r/1620811585-18582-15-git-send-email-tanxiaofei@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-13 18:29:13 +02:00