1. 02 2月, 2015 8 次提交
    • O
      hso: move tty_unregister outside hso_serial_common_free() · 69b377b3
      Olivier Sobrie 提交于
      The function hso_serial_common_free() is called either by the cleanup
      method of the tty or by the usb disconnect method.
      In the former case, the usb_disconnect() has been already called
      and the sysfs group associated to the device has been removed.
      By calling tty_unregister directly from the usb_disconnect() method,
      we avoid a warning due to the removal of the sysfs group of the usb
      device.
      
      Example of warning:
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 778 at fs/sysfs/group.c:225 sysfs_remove_group+0x50/0x94()
      sysfs group c0645a88 not found for kobject 'ttyHS5'
      Modules linked in:
      CPU: 0 PID: 778 Comm: kworker/0:3 Tainted: G        W      3.18.0+ #105
      Workqueue: events release_one_tty
      [<c000dfe4>] (unwind_backtrace) from [<c000c014>] (show_stack+0x14/0x1c)
      [<c000c014>] (show_stack) from [<c0016bac>] (warn_slowpath_common+0x5c/0x7c)
      [<c0016bac>] (warn_slowpath_common) from [<c0016c60>] (warn_slowpath_fmt+0x30/0x40)
      [<c0016c60>] (warn_slowpath_fmt) from [<c00ddd14>] (sysfs_remove_group+0x50/0x94)
      [<c00ddd14>] (sysfs_remove_group) from [<c0221e44>] (device_del+0x30/0x190)
      [<c0221e44>] (device_del) from [<c0221fb0>] (device_unregister+0xc/0x18)
      [<c0221fb0>] (device_unregister) from [<c0221fec>] (device_destroy+0x30/0x3c)
      [<c0221fec>] (device_destroy) from [<c01fe1dc>] (tty_unregister_device+0x2c/0x5c)
      [<c01fe1dc>] (tty_unregister_device) from [<c029a428>] (hso_serial_common_free+0x2c/0x88)
      [<c029a428>] (hso_serial_common_free) from [<c029a4c0>] (hso_serial_ref_free+0x3c/0xb8)
      [<c029a4c0>] (hso_serial_ref_free) from [<c01ff430>] (release_one_tty+0x30/0x84)
      [<c01ff430>] (release_one_tty) from [<c00271d4>] (process_one_work+0x21c/0x3c8)
      [<c00271d4>] (process_one_work) from [<c0027758>] (worker_thread+0x3d8/0x560)
      [<c0027758>] (worker_thread) from [<c002be4c>] (kthread+0xc0/0xcc)
      [<c002be4c>] (kthread) from [<c0009630>] (ret_from_fork+0x14/0x24)
      ---[ end trace cb88537fdc8fa208 ]---
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      69b377b3
    • O
      hso: replace reset_device work by usb_queue_reset_device() · 26c1f1f5
      Olivier Sobrie 提交于
      There is no need for a dedicated reset work in the hso driver since
      there is already a reset work foreseen in usb_interface that does
      the same.
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      26c1f1f5
    • O
      hso: rename hso_dev into serial in hso_free_interface() · f6516b69
      Olivier Sobrie 提交于
      In other functions of the driver, variables of type "struct hso_serial"
      are denoted by "serial" and variables of type "struct hso_device" are
      denoted by "hso_dev". This patch makes the hso_free_interface()
      consistent with these notations.
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f6516b69
    • O
      hso: fix small indentation error · 79927679
      Olivier Sobrie 提交于
      Simply remove the useless extra tab.
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      79927679
    • O
      hso: fix memory leak in hso_create_rfkill() · 2e6d01ff
      Olivier Sobrie 提交于
      When the rfkill interface was created, a buffer containing the name
      of the rfkill node was allocated. This buffer was never freed when the
      device disappears.
      
      To fix the problem, we put the name given to rfkill_alloc() in
      the hso_net structure.
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2e6d01ff
    • O
      hso: fix memory leak when device disconnects · 295fc56f
      Olivier Sobrie 提交于
      In the disconnect path, tx_buffer should freed like tx_data to avoid
      a memory leak when the device disconnects.
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      295fc56f
    • O
      hso: fix crash when device disappears while serial port is open · 29bd3bc1
      Olivier Sobrie 提交于
      When the device disappear, the function hso_disconnect() is called to
      perform cleanup. In the cleanup function, hso_free_interface() calls
      tty_port_tty_hangup() in view of scheduling a work to hang up the tty if
      needed. If the port was not open then hso_serial_ref_free() is called
      directly to cleanup everything. Otherwise, hso_serial_ref_free() is called
      when the last fd associated to the port is closed.
      
      For each open port, tty_release() will call the close method,
      hso_serial_close(), which drops the last kref and call
      hso_serial_ref_free() which unregisters, destroys the tty port
      and finally frees the structure in which the tty_port structure
      is included. Later, in tty_release(), more precisely when release_tty()
      is called, the tty_port previously freed is accessed to cancel
      the tty buf workqueue and it leads to a crash.
      
      In view of avoiding this crash, we add a cleanup method that is called
      at the end of the hangup process and we drop the last kref in this
      function when all the ports have been closed, when tty_port is no
      more needed and when it is safe to free the structure containing the
      tty_port structure.
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      29bd3bc1
    • O
      hso: remove useless header file timer.h · 3ac856c1
      Olivier Sobrie 提交于
      No timer related function is used in this driver.
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3ac856c1
  2. 01 2月, 2015 3 次提交
  3. 31 1月, 2015 7 次提交
  4. 30 1月, 2015 4 次提交
  5. 29 1月, 2015 6 次提交
  6. 28 1月, 2015 12 次提交