29 Feb, 2020

1 commit

  • commit 0c5aae59270fb1f827acce182786094c9ccf598e upstream.

    The serdev tty-port controller driver should reset the tty-port client
    operations also on deregistration to avoid a NULL-pointer dereference in
    case the port is later re-registered as a normal tty device.

    Note that this can only happen with tty drivers such as 8250 which have
    statically allocated port structures that can end up being reused and
    where a later registration would not register a serdev controller (e.g.
    due to registration errors or if the devicetree has been changed in
    between).

    Specifically, this can be an issue for any statically defined ports that
    would be registered by 8250 core when an 8250 driver is being unbound.

    Fixes: bed35c6dfa6a ("serdev: add a tty port controller driver")
    Cc: stable # 4.11
    Reported-by: Loic Poulain
    Signed-off-by: Johan Hovold
    Link: https://lore.kernel.org/r/20200210145730.22762-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

15 Jan, 2020

1 commit

  • commit c5ee0b3104e0b292d353e63fd31cb8c692645d8c upstream.

    Serdev sub-system claims all ACPI serial devices that are not already
    initialised. As a result, no device node is created for serial ports
    on certain boards such as the Apollo Lake based UP2. This has the
    unintended consequence of not being able to raise the login prompt via
    serial connection.

    Introduce a blacklist to reject ACPI serial devices that should not be
    claimed by serdev sub-system. Add the peripheral ids for Intel HS UART
    to the blacklist to bring back serial port on SoCs carrying them.

    Cc: stable@vger.kernel.org
    Signed-off-by: Punit Agrawal
    Acked-by: Hans de Goede
    Acked-by: Johan Hovold
    Cc: Rob Herring
    Link: https://lore.kernel.org/r/20191219100345.911093-1-punit1.agrawal@toshiba.co.jp
    Signed-off-by: Greg Kroah-Hartman

    Punit Agrawal
     

05 Apr, 2019

1 commit


30 Jan, 2019

1 commit


28 Nov, 2018

4 commits

  • Document the asynchronous serdev_device_write_buf() and synchronous
    serdev_device_write() functions using kernel-doc.

    Specifically, mention that writing data only means that data has been
    buffered by the controller, and that the synchronous helper depends on
    serdev_device_write_wakeup() being called in the driver write_wakeup()
    callback.

    Signed-off-by: Johan Hovold
    Reviewed-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Allow the synchronous serdev_device_write() helper to be interrupted.

    This is useful for cases where I/O is performed on behalf of user space
    and we don't want to block indefinitely when using flow control.

    Signed-off-by: Johan Hovold
    Reviewed-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Make the synchronous serdev_device_write() helper behave analogous to
    the asynchronous serdev_device_write_buf() by returning the number of
    bytes written (or rather buffered) also on timeout.

    This will allow drivers to distinguish the case where data was partially
    written from the case where no data was written.

    Also update the only two users that checked the return value.

    Signed-off-by: Johan Hovold
    Reviewed-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Use zero to indicate infinite timeout for the synchronous
    serdev_device_write() helper.

    This allows drivers to specify an infinite timeout without knowing about
    serdev implementation details, while also allowing the same timeout
    argument to be used for both serdev_device_write() and
    serdev_device_wait_until_sent().

    Note that passing zero to the current helper makes no sense; just call
    the asynchronous serdev_device_write_buf() directly instead.

    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

15 Jul, 2018

1 commit

  • In order to open up the required power gate before any operation can be
    effectively performed over the serial bus between CPU and serdev, it's
    clearly essential to add common attach functions for PM domains to serdev
    at the probe phase.

    Similarly, the relevant dettach function for the PM domains should be
    properly and reversely added at the remove phase.

    Signed-off-by: Sean Wang
    Reviewed-by: Ulf Hansson
    Reviewed-by: Johan Hovold
    Cc: Rob Herring
    Cc: Ulf Hansson
    Cc: Jiri Slaby
    Cc: linux-serial@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Sean Wang
     

02 Jul, 2018

1 commit


28 Jun, 2018

2 commits

  • Make sure to free all resources associated with the ida on module
    exit.

    Fixes: cd6484e1830b ("serdev: Introduce new bus for serial attached devices")
    Cc: stable # 4.11
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Add support for controller runtime power management to serdev core. This
    is needed to allow slave drivers to manage the runtime PM state of the
    underlying serial controller when its driver, in turn, implements more
    aggressive runtime power management (e.g. using autosuspend).

    For some applications, for example, where loss off initial data after a
    remote-wakeup event is acceptable or where rx is not used at all,
    aggressive serial controller runtime PM may be used without further
    involvement of the slave driver. But when this is not the case, the
    slave driver must be able to indicate when incoming data is expected in
    order to avoid data loss.

    To facilitate the common case, where the serial controller power state
    is active whenever the port is open (which is the case with just about
    every serial driver), and where data loss is not acceptable and cannot
    even be prevented by explicit controller runtime power management, an
    RPM reference is taken in serdev open and put again at close. This
    reference can later be balanced by any serdev driver which wants and/or
    can handle aggressive controller runtime PM.

    Note that the .ignore_children flag is set for the serdev controller to
    allow the underlying hardware to idle when no I/O is expected, regardless
    of the slave device RPM state.

    Acked-by: Tony Lindgren
    Reviewed-by: Sebastian Reichel
    Signed-off-by: Johan Hovold
    Acked-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

14 Mar, 2018

1 commit


02 Feb, 2018

1 commit

  • Pull tty/staging driver updates from Greg KH:
    "Here is the big tty/serial driver update for 4.16-rc1.

    The usual number of various serial driver fixes and updates to try to
    get them to work with crazy hardware configurations (seriously, how
    many different ways are hardware engineers going to come up with to
    hook up a simple UART?)

    There is also some serdev bugfixes and updates, as well as a
    smattering of other small fixes in here.

    All have been in the linux-next tree for a while, with no reported
    issues"

    * tag 'tty-4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (65 commits)
    tty: serial: exar: Relocate sleep wake-up handling
    tty: fix data race between tty_init_dev and flush of buf
    serial: imx: fix endless loop during suspend
    serial: core: mark port as initialized after successful IRQ change
    serdev: only match serdev devices
    serdev: do not generate modaliases for controllers
    serial: mxs-auart: don't use GPIOF_* with gpiod_get_direction
    serial: 8250_dw: Revert "Improve clock rate setting"
    MAINTAINERS: Add myself as designated reviewer for 8250_dw
    gpio: serial: max310x: Support open-drain configuration for GPIOs
    serdev: Fix serdev_uevent failure on ACPI enumerated serdev-controllers
    serial: 8250_ingenic: Parse earlycon options
    serial: 8250_ingenic: Add support for the JZ4770 SoC
    serial: core: Make uart_parse_options take const char* argument
    serial: 8250_of: fix return code when probe function fails to get reset
    serial: imx: Only wakeup via RTSDEN bit if the system has RTS/CTS
    serial: 8250_uniphier: fix error return code in uniphier_uart_probe()
    tty: n_gsm: Allow ADM response in addition to UA for control dlci
    tty: omap-serial: Fix initial on-boot RTS GPIO level
    tty: serial: jsm: Add one check against NULL pointer dereference
    ...

    Linus Torvalds
     

01 Feb, 2018

1 commit

  • Pull networking updates from David Miller:

    1) Significantly shrink the core networking routing structures. Result
    of http://vger.kernel.org/~davem/seoul2017_netdev_keynote.pdf

    2) Add netdevsim driver for testing various offloads, from Jakub
    Kicinski.

    3) Support cross-chip FDB operations in DSA, from Vivien Didelot.

    4) Add a 2nd listener hash table for TCP, similar to what was done for
    UDP. From Martin KaFai Lau.

    5) Add eBPF based queue selection to tun, from Jason Wang.

    6) Lockless qdisc support, from John Fastabend.

    7) SCTP stream interleave support, from Xin Long.

    8) Smoother TCP receive autotuning, from Eric Dumazet.

    9) Lots of erspan tunneling enhancements, from William Tu.

    10) Add true function call support to BPF, from Alexei Starovoitov.

    11) Add explicit support for GRO HW offloading, from Michael Chan.

    12) Support extack generation in more netlink subsystems. From Alexander
    Aring, Quentin Monnet, and Jakub Kicinski.

    13) Add 1000BaseX, flow control, and EEE support to mvneta driver. From
    Russell King.

    14) Add flow table abstraction to netfilter, from Pablo Neira Ayuso.

    15) Many improvements and simplifications to the NFP driver bpf JIT,
    from Jakub Kicinski.

    16) Support for ipv6 non-equal cost multipath routing, from Ido
    Schimmel.

    17) Add resource abstration to devlink, from Arkadi Sharshevsky.

    18) Packet scheduler classifier shared filter block support, from Jiri
    Pirko.

    19) Avoid locking in act_csum, from Davide Caratti.

    20) devinet_ioctl() simplifications from Al viro.

    21) More TCP bpf improvements from Lawrence Brakmo.

    22) Add support for onlink ipv6 route flag, similar to ipv4, from David
    Ahern.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1925 commits)
    tls: Add support for encryption using async offload accelerator
    ip6mr: fix stale iterator
    net/sched: kconfig: Remove blank help texts
    openvswitch: meter: Use 64-bit arithmetic instead of 32-bit
    tcp_nv: fix potential integer overflow in tcpnv_acked
    r8169: fix RTL8168EP take too long to complete driver initialization.
    qmi_wwan: Add support for Quectel EP06
    rtnetlink: enable IFLA_IF_NETNSID for RTM_NEWLINK
    ipmr: Fix ptrdiff_t print formatting
    ibmvnic: Wait for device response when changing MAC
    qlcnic: fix deadlock bug
    tcp: release sk_frag.page in tcp_disconnect
    ipv4: Get the address of interface correctly.
    net_sched: gen_estimator: fix lockdep splat
    net: macb: Handle HRESP error
    net/mlx5e: IPoIB, Fix copy-paste bug in flow steering refactoring
    ipv6: addrconf: break critical section in addrconf_verify_rtnl()
    ipv6: change route cache aging logic
    i40e/i40evf: Update DESC_NEEDED value to reflect larger value
    bnxt_en: cleanup DIM work on device shutdown
    ...

    Linus Torvalds
     

30 Jan, 2018

1 commit

  • Pull MFD updates from Lee Jones:
    "New Drivers:
    - Add support for RAVE Supervisory Processor

    Moved drivers:
    - Move Realtek Card Reader Driver to Misc

    New Device Support:
    - Add support for Pinctrl to axp20x

    New Functionality:
    - Add resume support to atmel-flexcom

    Fix-ups:
    - Split MFD (mfd) and userspace handlers (platform) in cros_ec
    - Fix trivial (whitespace, spelling) issue(s) in pcf50633-core
    - Clean-up error handling in ab8500-debugfs
    - General tidying up in tmio_core
    - Kconfig fix-ups for qcom-pm8xxx
    - Licensing changes (SPDX) to stm32-lptimer, stm32-timers
    - Device Tree fixups in mc13xxx
    - Simplify/remove unused code in cros_ec_spi, axp20x, ti_am335x_tscadc,
    kempld-core, intel_soc_pmic_core.c, ab8500-debugfs"

    * tag 'mfd-next-4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (32 commits)
    mfd: lpc_ich: Do not touch SPI-NOR write protection bit on Apollo Lake
    mfd: axp20x: Mark axp288 CHRG_BAK_CTRL register volatile
    mfd: ab8500: Introduce DEFINE_SHOW_ATTRIBUTE() macro
    atmel_flexcom: Support resuming after a chip reset
    mfd: Remove duplicate includes
    dt-bindings: mfd: mc13xxx: Add the unit address to sysled
    mfd: stm32: Adopt SPDX identifier
    mfd: axp20x: Add pinctrl cell for AXP813
    mfd: pm8xxx: Make elegible for COMPILE_TEST
    mfd: kempld-core: Use resource_size function on resource object
    mfd: tmio: Move register macros to tmio_core.c
    mfd: cros ec: spi: Simplify delay handling between SPI messages
    mfd: palmas: Assign the right powerhold mask for tps65917
    mfd: ab8500-debugfs: Use common error handling code in ab8500_print_modem_registers()
    mfd: ti_am335x_tscadc: Remove redundant assignment to node
    mfd: pcf50633: Fix spelling mistake: 'Falied' -> 'Failed'
    dt-bindings: watchdog: Add bindings for RAVE SP watchdog driver
    watchdog: Add RAVE SP watchdog driver
    mfd: Add driver for RAVE Supervisory Processor
    serdev: Introduce devm_serdev_device_open()
    ...

    Linus Torvalds
     

23 Jan, 2018

1 commit

  • Adds serdev_device_set_parity() and an implementation for ttyport.
    The interface uses an enum with the values SERIAL_PARITY_NONE,
    SERIAL_PARITY_EVEN and SERIAL_PARITY_ODD.

    Signed-off-by: Ulrich Hecht
    Reviewed-by: Sebastian Reichel
    Reviewed-by: Johan Hovold
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Marcel Holtmann

    Ulrich Hecht
     

22 Jan, 2018

2 commits

  • Only serdev devices (a.k.a. clients or slaves) are bound to drivers so
    bail out early from match() in case the device is not a serdev device
    (i.e. if it's a serdev controller).

    Signed-off-by: Johan Hovold
    Reviewed-by: Sebastian Reichel
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Serdev controllers are not bound to any drivers and it therefore makes
    no sense to generate modaliases for them.

    This has already been fixed separately for ACPI controllers for which
    uevent errors were also being logged during probe due to the missing
    ACPI companions (from which ACPI modaliases are generated).

    This patch moves the modalias handling from the bus type to the client
    device type. Specifically, this means that only serdev devices (a.k.a.
    clients or slaves) will have have MODALIAS fields in their uevent
    environments and corresponding modalias sysfs attributes.

    Also add the missing static keyword for the modalias device attribute
    when moving the definition.

    Reported-by: Hans de Goede
    Signed-off-by: Johan Hovold
    Reviewed-by: Sebastian Reichel
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

09 Jan, 2018

1 commit

  • ACPI enumerated serdev-controllers do not have an ACPI companion, the ACPI
    companion belongs to the serdev-device child of the serdev-controller, not
    to the controller itself. This was causing serdev_uevent to always return
    -ENODEV when called on a serdev-controller leading to errors like these:

    kernel: serial serial0: uevent: failed to send synthetic uevent

    being logged. This commit modifies serdev_uevent to directly return 0
    when called on an ACPI enumerated serdev-controller fixing this.

    Note: I do not think that setting a modalias on a devicetree enumerated
    serdev-controller makes sense either. So perhaps the !dev->of_node part of
    the check can be dropped too, but I'm not entirely sure that doing this
    on devicetree too is correct.

    Signed-off-by: Hans de Goede
    Acked-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

08 Jan, 2018

2 commits

  • Add code implementing managed version of serdev_device_open() for
    serdev device drivers that "open" the device during driver's lifecycle
    only once (e.g. opened in .probe() and closed in .remove()).

    Acked-by: Philippe Ombredanne
    Acked-by: Pavel Machek
    Acked-by: Rob Herring
    Reviewed-by: Sebastian Reichel
    Reviewed-by: Guenter Roeck
    Signed-off-by: Andrey Smirnov
    Signed-off-by: Lee Jones

    Andrey Smirnov
     
  • Using devres infrastructure it is possible to write a serdev driver
    that doesn't have any code that needs to be called as a part of
    .remove. Add code to make .remove optional.

    Acked-by: Philippe Ombredanne
    Acked-by: Pavel Machek
    Acked-by: Rob Herring
    Reviewed-by: Sebastian Reichel
    Reviewed-by: Guenter Roeck
    Signed-off-by: Andrey Smirnov
    Signed-off-by: Lee Jones

    Andrey Smirnov
     

18 Dec, 2017

1 commit


11 Dec, 2017

1 commit


28 Nov, 2017

7 commits

  • Serdev currently does not support hangups so make sure to set CLOCAL to
    prevent loss of carrier from triggering one.

    Note however that not all tty drivers honour CLOCAL.

    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Release the tty lock once tty-driver open returns to make it clear that
    it does not protect neither tty->termios or the serport flags.

    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Make sure to hold the tty lock as required when calling tty-driver
    close() (e.g. to avoid racing with hangup()).

    Note that the serport active flag is currently set under the lock at
    controller open, but really isn't protected by it.

    Fixes: cd6484e1830b ("serdev: Introduce new bus for serial attached devices")
    Signed-off-by: Johan Hovold
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Make sure to use a properly refcounted tty_struct in write_wake up to
    avoid dereferencing a NULL-pointer when a port is being hung up.

    Fixes: bed35c6dfa6a ("serdev: add a tty port controller driver")
    Cc: stable # 4.11
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • The receive_buf tty-port callback should return the number of bytes
    accepted and must specifically never return a negative errno (or a value
    larger than the buffer size) to the tty layer.

    A serdev driver not providing a receive_buf callback would currently
    cause the flush_to_ldisc() worker to spin in a tight loop when the tty
    buffer pointers are incremented with -EINVAL (-22) after data has been
    received.

    A serdev driver occasionally returning a negative errno (or a too large
    byte count) could cause information leaks or crashes when accessing
    memory outside the tty buffers in consecutive callbacks.

    Fixes: cd6484e1830b ("serdev: Introduce new bus for serial attached devices")
    Cc: stable # 4.11
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Add code implementing managed version of serdev_device_open() for
    serdev device drivers that "open" the device during driver's lifecycle
    only once (e.g. opened in .probe() and closed in .remove()).

    Cc: linux-kernel@vger.kernel.org
    Cc: linux-serial@vger.kernel.org
    Cc: Rob Herring
    Cc: cphealy@gmail.com
    Cc: Guenter Roeck
    Cc: Lucas Stach
    Cc: Nikita Yushchenko
    Cc: Lee Jones
    Cc: Greg Kroah-Hartman
    Cc: Pavel Machek
    Cc: Andy Shevchenko
    Cc: Johan Hovold
    Cc: Sebastian Reichel
    Acked-by: Rob Herring
    Reviewed-by: Sebastian Reichel
    Reviewed-by: Guenter Roeck
    Signed-off-by: Andrey Smirnov
    Signed-off-by: Greg Kroah-Hartman

    Andrey Smirnov
     
  • Using devres infrastructure it is possible to write a serdev driver
    that doesn't have any code that needs to be called as a part of
    .remove. Add code to make .remove optional.

    Cc: linux-kernel@vger.kernel.org
    Cc: linux-serial@vger.kernel.org
    Cc: Rob Herring
    Cc: cphealy@gmail.com
    Cc: Guenter Roeck
    Cc: Lucas Stach
    Cc: Nikita Yushchenko
    Cc: Lee Jones
    Cc: Greg Kroah-Hartman
    Cc: Pavel Machek
    Cc: Andy Shevchenko
    Cc: Johan Hovold
    Cc: Sebastian Reichel
    Acked-by: Rob Herring
    Reviewed-by: Sebastian Reichel
    Reviewed-by: Guenter Roeck
    Signed-off-by: Andrey Smirnov
    Signed-off-by: Greg Kroah-Hartman

    Andrey Smirnov
     

08 Nov, 2017

2 commits

  • Now that the SPDX tag is in all tty files, that identifies the license
    in a specific and legally-defined manner. So the extra GPL text wording
    can be removed as it is no longer needed at all.

    This is done on a quest to remove the 700+ different ways that files in
    the kernel describe the GPL license text. And there's unneeded stuff
    like the address (sometimes incorrect) for the FSF which is never
    needed.

    No copyright headers or other non-license-description text was removed.

    Cc: Rob Herring
    Cc: Jiri Slaby
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • It's good to have SPDX identifiers in all files to make it easier to
    audit the kernel tree for correct licenses.

    Update the drivers/tty files files with the correct SPDX license
    identifier based on the license text in the file itself. The SPDX
    identifier is a legally binding shorthand, which can be used instead of
    the full boiler plate text.

    This work is based on a script and data from Thomas Gleixner, Philippe
    Ombredanne, and Kate Stewart.

    Cc: Jiri Slaby
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: Chris Metcalf
    Cc: Jiri Kosina
    Cc: David Sterba
    Cc: James Hogan
    Cc: Rob Herring
    Cc: Eric Anholt
    Cc: Stefan Wahren
    Cc: Florian Fainelli
    Cc: Ray Jui
    Cc: Scott Branden
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Cc: Joachim Eastwood
    Cc: Matthias Brugger
    Cc: Masahiro Yamada
    Cc: Tobias Klauser
    Cc: Russell King
    Cc: Vineet Gupta
    Cc: Richard Genoud
    Cc: Alexander Shiyan
    Cc: Baruch Siach
    Cc: "Maciej W. Rozycki"
    Cc: "Uwe Kleine-König"
    Cc: Pat Gefre
    Cc: "Guilherme G. Piccoli"
    Cc: Jason Wessel
    Cc: Vladimir Zapolskiy
    Cc: Sylvain Lemieux
    Cc: Carlo Caione
    Cc: Kevin Hilman
    Cc: Liviu Dudau
    Cc: Sudeep Holla
    Cc: Lorenzo Pieralisi
    Cc: Andy Gross
    Cc: David Brown
    Cc: "Andreas Färber"
    Cc: Kevin Cernekee
    Cc: Laxman Dewangan
    Cc: Thierry Reding
    Cc: Jonathan Hunter
    Cc: Barry Song
    Cc: Patrice Chotard
    Cc: Maxime Coquelin
    Cc: Alexandre Torgue
    Cc: "David S. Miller"
    Cc: Peter Korsgaard
    Cc: Timur Tabi
    Cc: Tony Prisk
    Cc: Michal Simek
    Cc: "Sören Brinkmann"
    Cc: Thomas Gleixner
    Cc: Kate Stewart
    Cc: Philippe Ombredanne
    Cc: Jiri Slaby
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

23 Oct, 2017

4 commits

  • Reorder controller initialisation so that in the unlikely event that id
    allocation fails, we don't end up releasing id 0 in the destructor.

    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Serdev currently only supports a single slave device, but the required
    sanity checks to prevent further registration attempts were missing.

    If a serial-port node has two child nodes with compatible properties,
    the OF code would try to register two slave devices using the same id
    and name. Driver core will not allow this (and there will be loud
    complaints), but the controller's slave pointer would already have been
    set to address of the soon to be deallocated second struct
    serdev_device. As the first slave device remains registered, this can
    lead to later use-after-free issues when the slave callbacks are
    accessed.

    Note that while the serdev registration helpers are exported, they are
    typically only called by serdev core. Any other (out-of-tree) callers
    must serialise registration and deregistration themselves.

    Fixes: cd6484e1830b ("serdev: Introduce new bus for serial attached devices")
    Cc: stable # 4.11
    Cc: Rob Herring
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • Add missing error handling for tty-driver open() which may fail (e.g. if
    resource allocation fails or if a port is being disconnected).

    Note that close() must be called also in case of failed open() and that
    the operation sanity check is amended to catch buggy drivers.

    Signed-off-by: Johan Hovold
    Acked-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • The tty-driver open routine is mandatory, but the serdev
    tty-port-controller implementation did not treat it as such and would
    instead fall back to calling tty_port_open() directly.

    Signed-off-by: Johan Hovold
    Acked-by: Rob Herring
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

20 Oct, 2017

2 commits

  • This patch allows SerDev module to manage serial devices declared as
    attached to an UART in ACPI table.

    acpi_serdev_add_device() callback will only take into account entries
    without enumerated flag set. This flags is set for all entries during
    ACPI scan, except for SPI and I2C serial devices, and for UART with
    2nd patch in the series.

    Check if a serdev device as been allocated during acpi_walk_namespace()
    to prevent serdev controller registration instead of the tty-class device.

    Signed-off-by: Frédéric Danis
    Reviewed-by: Rob Herring
    Reviewed-by: Sebastian Reichel
    Reviewed-by: Johan Hovold
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Frédéric Danis
     
  • Amend the Serial device bus Kconfig entries to clarify that you most
    likely also want to enable TTY port controller support, and make
    SERIAL_DEV_CTRL_TTYPORT default to Y (when bus support is enabled).

    Note that the TTY port controller is currently the only in-kernel
    serdev controller implementation.

    Signed-off-by: Johan Hovold
    Reviewed-by: Sebastian Reichel
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     

30 Jul, 2017

1 commit

  • Now that we have a custom printf format specifier, convert users of
    full_name to use %pOF instead. This is preparation to remove storing
    of the full path string for each node.

    Signed-off-by: Rob Herring
    Acked-by: David S. Miller
    Cc: Jiri Slaby
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: "David S. Miller"
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-serial@vger.kernel.org
    Cc: sparclinux@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Rob Herring