1. 15 5月, 2017 1 次提交
  2. 29 3月, 2017 1 次提交
  3. 28 3月, 2017 4 次提交
  4. 08 3月, 2017 2 次提交
  5. 26 1月, 2017 1 次提交
  6. 04 1月, 2017 4 次提交
    • J
      USB: serial: io_ti: bind to interface after fw download · e35d6d7c
      Johan Hovold 提交于
      Bind to the interface, but do not register any ports, after having
      downloaded the firmware. The device will still disconnect and
      re-enumerate, but this way we avoid an error messages from being logged
      as part of the process:
      
      io_ti: probe of 1-1.3:1.0 failed with error -5
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      e35d6d7c
    • J
      USB: serial: io_ti: fix I/O after disconnect · 2330d0a8
      Johan Hovold 提交于
      Cancel the heartbeat work on driver unbind in order to avoid I/O after
      disconnect in case the port is held open.
      
      Note that the cancel in release() is still needed to stop the heartbeat
      after late probe errors.
      
      Fixes: 26c78daa ("USB: io_ti: Add heartbeat to keep idle EP/416
      ports from disconnecting")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      2330d0a8
    • J
      USB: serial: io_ti: fix another NULL-deref at open · 4f9785cc
      Johan Hovold 提交于
      In case a device is left in "boot-mode" we must not register any port
      devices in order to avoid a NULL-pointer dereference on open due to
      missing endpoints. This could be used by a malicious device to trigger
      an OOPS:
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000030
      ...
      [<bf0caa84>] (edge_open [io_ti]) from [<bf0b0118>] (serial_port_activate+0x68/0x98 [usbserial])
      [<bf0b0118>] (serial_port_activate [usbserial]) from [<c0470ca4>] (tty_port_open+0x9c/0xe8)
      [<c0470ca4>] (tty_port_open) from [<bf0b0da0>] (serial_open+0x48/0x6c [usbserial])
      [<bf0b0da0>] (serial_open [usbserial]) from [<c0469178>] (tty_open+0xcc/0x5cc)
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      4f9785cc
    • J
      USB: serial: io_ti: fix NULL-deref at open · a323fefc
      Johan Hovold 提交于
      Fix NULL-pointer dereference when clearing halt at open should a
      malicious device lack the expected endpoints when in download mode.
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000030
      ...
      [<bf011ed8>] (edge_open [io_ti]) from [<bf000118>] (serial_port_activate+0x68/0x98 [usbserial])
      [<bf000118>] (serial_port_activate [usbserial]) from [<c0470ca4>] (tty_port_open+0x9c/0xe8)
      [<c0470ca4>] (tty_port_open) from [<bf000da0>] (serial_open+0x48/0x6c [usbserial])
      [<bf000da0>] (serial_open [usbserial]) from [<c0469178>] (tty_open+0xcc/0x5cc)
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      a323fefc
  7. 12 11月, 2016 1 次提交
  8. 09 10月, 2015 6 次提交
  9. 31 7月, 2015 4 次提交
    • P
      USB: io_ti: Add heartbeat to keep idle EP/416 ports from disconnecting · 26c78daa
      Peter E. Berger 提交于
      When using Edgeport/416 models with newer firmware (sometime after
      firmware version 4.80.0), idle ports are automatically bounced
      (disconnected and then reconnected) approximately every 60 seconds.
      This breaks programs (e.g: minicom) where idle periods are common,
      normal and expected.
      
      I confirmed with the manufacturer (Digi International) that Edgeport/416
      models now ship from the factory with firmware that expects periodic
      "heartbeat" queries from the driver to keep idle ports alive.  This
      patch implements heartbeat support using the mechanism Digi suggested
      (periodically requesting an I2C descriptor address) that appears effective
      on Edgeports running the newer firmware (that require it) and benign on
      Edgeport devices running older firmware.  Since we know that Edgeport
      firmware version 4.80 (the version distributed in /lib/firmware/down3.bin
      and used for Edgeports that are either running still older versions or
      have no onboard non-volatile firmware image) does not require heartbeat
      support, this patch schedules heartbeats only on Edgeport/416 devices,
      and only if they are running firmware versions newer than 4.80.
      Signed-off-by: NPeter E. Berger <pberger@brimson.com>
      [johan: minor style changes ]
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      26c78daa
    • P
      USB: io_ti: Add firmware image sanity checks · dcb8e99d
      Peter E. Berger 提交于
      Do what we can to verify that the driver's firmware image is valid
      (before attempting to download it to the Edgeport) by adding a new
      function, check_fw_sanity(), and a call to it in in download_fw().
      
      Note: It looks like some Edgeports (models like the EP/416 with on-board
      E2PROM) may be able to function even if the on-disk firmware image is
      bad or missing, iff their local E2PROM versions are valid.  But most
      Edgeport models (I've tried EP/1 and EP/8) do not appear to have this
      capability and they always rely on the on-disk firmware image.
      
      I tested an implementation that calls the new check_fw_sanity()
      function at the top of download_fw() and, rather than simply returning
      an error if the firmware image is bad or missing, it saves the result
      and defers the decision until later when it may find that it is running
      on a E2PROM-equipped device with a valid image.  But I think this is
      messier than it is worth (adding still more messiness to the already
      very messy download_fw()) for such a marginal possible benefit.  So, at
      least for now, I have chosen the much simpler approach of returning an
      error whenever edge_startup() fails to load an on-disk firmware image, or
      check_fw_sanity() indicates that it is unusable.
      Signed-off-by: NPeter E. Berger <pberger@brimson.com>
      [johan: drop redundant checksum mask ]
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      dcb8e99d
    • P
      USB: io_ti: Fix firmware version handling · c0e34831
      Peter E. Berger 提交于
      The io_ti driver fails to download firmware to Edgeport
      devices such as the EP/416, even when the on-disk firmware image
      (/lib/firmware/edgeport/down3.bin) is more current than the version
      on the EP/416.  The current download code is broken in a few ways.
      Notably it mis-uses global variables OperationalMajorVersion and
      OperationalMinorVersion (reading their values before they've been
      properly initialized and subsequently initializing them multiple times
      without synchronization).  This patch drops the global variables and
      replaces the redundant calls to request_firmware()/release_firmware()
      in download_fw() with a single call pair in edge_startup(); the firmware
      image pointer is then passed to download_fw() and build_i2c_fw_hdr().
      Signed-off-by: NPeter E. Berger <pberger@brimson.com>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      c0e34831
    • P
      USB: io_ti: Increase insufficient timeout for firmware downloads · c3ece7e7
      Peter E. Berger 提交于
      The io_ti driver fails to download firmware to Edgeport devices such as
      the EP/416 and EP/421 (devices with on-board E2PROM).  One of the problems
      is that the default 1 second timeout in ti_vsend_sync() is insufficient
      for download operations.  This patch increases the download timeout to
      10 seconds.
      Signed-off-by: NPeter E. Berger <pberger@brimson.com>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      c3ece7e7
  10. 24 9月, 2014 1 次提交
  11. 28 5月, 2014 1 次提交
    • J
      USB: io_ti: fix firmware download on big-endian machines (part 2) · c03890ff
      Johan Hovold 提交于
      A recent patch that purported to fix firmware download on big-endian
      machines failed to add the corresponding sparse annotation to the
      i2c-header. This was reported by the kbuild test robot.
      
      Adding the appropriate annotation revealed another endianess bug related
      to the i2c-header Size-field in a code path that is exercised when the
      firmware is actually being downloaded (and not just verified and left
      untouched unless older than the firmware at hand).
      
      This patch adds the required sparse annotation to the i2c-header and
      makes sure that the Size-field is sent in little-endian byte order
      during firmware download also on big-endian machines.
      
      Note that this patch is only compile-tested, but that there is no
      functional change for little-endian systems.
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Cc: Ludovic Drolez <ldrolez@debian.org>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c03890ff
  12. 26 4月, 2014 1 次提交
  13. 09 1月, 2014 1 次提交
  14. 04 1月, 2014 2 次提交
  15. 26 8月, 2013 1 次提交
  16. 24 7月, 2013 3 次提交
  17. 18 6月, 2013 1 次提交
    • G
      USB: serial: make minor allocation dynamic · e5b1e206
      Greg Kroah-Hartman 提交于
      This moves the allocation of minor device numbers from a static array to
      be dynamic, using the idr interface.  This means that you could
      potentially get "gaps" in a minor number range for a single USB serial
      device with multiple ports, but all should still work properly.
      
      We remove the 'minor' field from the usb_serial structure, as it no
      longer makes any sense for it (use the field in the usb_serial_port
      structure if you really want to know this number), and take the fact
      that we were overloading a number in this field to determine if we had
      initialized the minor numbers or not, and just use a flag variable
      instead.
      
      Note, we still have the limitation of 255 USB to serial devices in the
      system, as that is all we are registering with the TTY layer at this
      point in time.
      Tested-by: NTobias Winter <tobias@linuxdingsda.de>
      Reviewed-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e5b1e206
  18. 11 6月, 2013 1 次提交
    • G
      USB: serial: ports: add minor and port number · 1143832e
      Greg Kroah-Hartman 提交于
      The usb_serial_port structure had the number field, which was the minor
      number for the port, which almost no one really cared about.  They
      really wanted the number of the port within the device, which you had to
      subtract from the minor of the parent usb_serial_device structure.  To
      clean this up, provide the real minor number of the port, and the number
      of the port within the serial device separately, as these numbers might
      not be related in the future.
      
      Bonus is that this cleans up a lot of logic in the drivers, and saves
      lines overall.
      Tested-by: NTobias Winter <tobias@linuxdingsda.de>
      Reviewed-by: NJohan Hovold <jhovold@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      --
       drivers/staging/serqt_usb2/serqt_usb2.c |   21 +++--------
       drivers/usb/serial/ark3116.c            |    2 -
       drivers/usb/serial/bus.c                |    6 +--
       drivers/usb/serial/console.c            |    2 -
       drivers/usb/serial/cp210x.c             |    2 -
       drivers/usb/serial/cypress_m8.c         |    4 +-
       drivers/usb/serial/digi_acceleport.c    |    6 ---
       drivers/usb/serial/f81232.c             |    5 +-
       drivers/usb/serial/garmin_gps.c         |    6 +--
       drivers/usb/serial/io_edgeport.c        |   58 ++++++++++++--------------------
       drivers/usb/serial/io_ti.c              |   21 ++++-------
       drivers/usb/serial/keyspan.c            |   29 +++++++---------
       drivers/usb/serial/metro-usb.c          |    4 +-
       drivers/usb/serial/mos7720.c            |   37 +++++++++-----------
       drivers/usb/serial/mos7840.c            |   52 +++++++++-------------------
       drivers/usb/serial/opticon.c            |    2 -
       drivers/usb/serial/pl2303.c             |    2 -
       drivers/usb/serial/quatech2.c           |    7 +--
       drivers/usb/serial/sierra.c             |    2 -
       drivers/usb/serial/ti_usb_3410_5052.c   |   10 ++---
       drivers/usb/serial/usb-serial.c         |    7 ++-
       drivers/usb/serial/usb_wwan.c           |    2 -
       drivers/usb/serial/whiteheat.c          |   20 +++++------
       include/linux/usb/serial.h              |    6 ++-
       24 files changed, 133 insertions(+), 180 deletions(-)
      1143832e
  19. 17 5月, 2013 1 次提交
  20. 20 4月, 2013 2 次提交
  21. 06 4月, 2013 1 次提交