1. 26 Oct, 2012 1 commit
    • Tilman Schmidt's avatar
      bas_gigaset: fix pre_reset handling · c6fdd8e5
      Tilman Schmidt authored
      The delayed work function int_in_work() may call usb_reset_device()
      and thus, indirectly, the driver's pre_reset method. Trying to
      cancel the work synchronously in that situation would deadlock.
      Fix by avoiding cancel_work_sync() in the pre_reset method.
      
      If the reset was NOT initiated by int_in_work() this might cause
      int_in_work() to run after the post_reset method, with urb_int_in
      already resubmitted, so handle that case gracefully.
      Signed-off-by: default avatarTilman Schmidt <tilman@imap.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c6fdd8e5
  2. 13 Sep, 2012 1 commit
    • Peter Senna Tschudin's avatar
      drivers/isdn/gigaset/common.c: Remove useless kfree · 7f2e6a5d
      Peter Senna Tschudin authored
      Remove useless kfree() and clean up code related to the removal.
      
      The semantic patch that finds this problem is as follows:
      (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @r exists@
      position p1,p2;
      expression x;
      @@
      
      if (x@p1 == NULL) { ... kfree@p2(x); ... return ...; }
      
      @unchanged exists@
      position r.p1,r.p2;
      expression e <= r.x,x,e1;
      iterator I;
      statement S;
      @@
      
      if (x@p1 == NULL) { ... when != I(x,...) S
                              when != e = e1
                              when != e += e1
                              when != e -= e1
                              when != ++e
                              when != --e
                              when != e++
                              when != e--
                              when != &e
         kfree@p2(x); ... return ...; }
      
      @ok depends on unchanged exists@
      position any r.p1;
      position r.p2;
      expression x;
      @@
      
      ... when != true x@p1 == NULL
      kfree@p2(x);
      
      @depends on !ok && unchanged@
      position r.p2;
      expression x;
      @@
      
      *kfree@p2(x);
      // </smpl>
      Signed-off-by: default avatarPeter Senna Tschudin <peter.senna@gmail.com>
      Acked-by: default avatarTilman Schmidt <tilman@imap.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7f2e6a5d
  3. 13 Aug, 2012 1 commit
    • Jiri Slaby's avatar
      TTY: use tty_port_register_device · 734cc178
      Jiri Slaby authored
      Currently we have no way to assign tty->port while performing tty
      installation. There are two ways to provide the link tty_struct =>
      tty_port. Either by calling tty_port_install from tty->ops->install or
      tty_port_register_device called instead of tty_register_device when
      the device is being set up after connected.
      
      In this patch we modify most of the drivers to do the latter. When the
      drivers use tty_register_device and we have tty_port already, we
      switch to tty_port_register_device. So we have the tty_struct =>
      tty_port link for free for those.
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Acked-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      734cc178
  4. 17 Jul, 2012 1 commit
  5. 16 Jul, 2012 1 commit
  6. 18 May, 2012 1 commit
    • Sarah Sharp's avatar
      USB: Disable hub-initiated LPM for comms devices. · e1f12eb6
      Sarah Sharp authored
      Hub-initiated LPM is not good for USB communications devices.  Comms
      devices should be able to tell when their link can go into a lower power
      state, because they know when an incoming transmission is finished.
      Ideally, these devices would slam their links into a lower power state,
      using the device-initiated LPM, after finishing the last packet of their
      data transfer.
      
      If we enable the idle timeouts for the parent hubs to enable
      hub-initiated LPM, we will get a lot of useless LPM packets on the bus
      as the devices reject LPM transitions when they're in the middle of
      receiving data.  Worse, some devices might blindly accept the
      hub-initiated LPM and power down their radios while they're in the
      middle of receiving a transmission.
      
      The Intel Windows folks are disabling hub-initiated LPM for all USB
      communications devices under a xHCI USB 3.0 host.  In order to keep
      the Linux behavior as close as possible to Windows, we need to do the
      same in Linux.
      
      Set the disable_hub_initiated_lpm flag for for all USB communications
      drivers.  I know there aren't currently any USB 3.0 devices that
      implement these class specifications, but we should be ready if they do.
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: Marcel Holtmann <marcel@holtmann.org>
      Cc: Gustavo Padovan <gustavo@padovan.org>
      Cc: Johan Hedberg <johan.hedberg@gmail.com>
      Cc: Hansjoerg Lipp <hjlipp@web.de>
      Cc: Tilman Schmidt <tilman@imap.cc>
      Cc: Karsten Keil <isdn@linux-pingi.de>
      Cc: Peter Korsgaard <jacmet@sunsite.dk>
      Cc: Jan Dumon <j.dumon@option.com>
      Cc: Petko Manolov <petkan@users.sourceforge.net>
      Cc: Steve Glendinning <steve.glendinning@smsc.com>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Kalle Valo <kvalo@qca.qualcomm.com>
      Cc: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>
      Cc: Jouni Malinen <jouni@qca.qualcomm.com>
      Cc: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
      Cc: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
      Cc: Christian Lamparter <chunkeey@googlemail.com>
      Cc: Brett Rudley <brudley@broadcom.com>
      Cc: Roland Vossen <rvossen@broadcom.com>
      Cc: Arend van Spriel <arend@broadcom.com>
      Cc: "Franky (Zhenhui) Lin" <frankyl@broadcom.com>
      Cc: Kan Yan <kanyan@broadcom.com>
      Cc: Dan Williams <dcbw@redhat.com>
      Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
      Cc: Ivo van Doorn <IvDoorn@gmail.com>
      Cc: Gertjan van Wingerde <gwingerde@gmail.com>
      Cc: Helmut Schaa <helmut.schaa@googlemail.com>
      Cc: Herton Ronaldo Krzesinski <herton@canonical.com>
      Cc: Hin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Larry Finger <Larry.Finger@lwfinger.net>
      Cc: Chaoming Li <chaoming_li@realsil.com.cn>
      Cc: Daniel Drake <dsd@gentoo.org>
      Cc: Ulrich Kunitz <kune@deine-taler.de>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      e1f12eb6
  7. 07 May, 2012 6 commits
  8. 09 Apr, 2012 1 commit
  9. 08 Mar, 2012 4 commits
  10. 27 Feb, 2012 1 commit
  11. 21 Feb, 2012 1 commit
    • Joe Perches's avatar
      isdn: whitespace coding style cleanup · 475be4d8
      Joe Perches authored
      isdn source code uses a not-current coding style.
      
      Update the coding style used on a per-line basis
      so that git diff -w shows only elided blank lines
      at EOF.
      
      Done with emacs and some scripts and some typing.
      
      Built x86 allyesconfig.
      No detected change in objdump -d or size.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      475be4d8
  12. 27 Nov, 2011 1 commit
  13. 31 Oct, 2011 2 commits
  14. 26 Jul, 2011 1 commit
  15. 17 Jun, 2011 1 commit
    • Pavel Shved's avatar
      gigaset: call module_put before restart of if_open() · 2f9381e9
      Pavel Shved authored
      if_open() calls try_module_get(), and after an attempt to lock a mutex
      the if_open() function may return -ERESTARTSYS without
      putting the module.  Then, when if_open() is executed again,
      try_module_get() is called making the reference counter of THIS_MODULE
      greater than one at successful exit from if_open().  The if_close()
      function puts the module only once, and as a result it can't be
      unloaded.
      
      This patch adds module_put call before the return from if_open().
      
      Found by Linux Driver Verification project (linuxtesting.org).
      Signed-off-by: default avatarPavel Shved <shved@ispras.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@conan.davemloft.net>
      2f9381e9
  16. 03 Jun, 2011 1 commit
    • Linus Torvalds's avatar
      Revert "tty: make receive_buf() return the amout of bytes received" · 55db4c64
      Linus Torvalds authored
      This reverts commit b1c43f82.
      
      It was broken in so many ways, and results in random odd pty issues.
      
      It re-introduced the buggy schedule_work() in flush_to_ldisc() that can
      cause endless work-loops (see commit a5660b41: "tty: fix endless
      work loop when the buffer fills up").
      
      It also used an "unsigned int" return value fo the ->receive_buf()
      function, but then made multiple functions return a negative error code,
      and didn't actually check for the error in the caller.
      
      And it didn't actually work at all.  BenH bisected down odd tty behavior
      to it:
        "It looks like the patch is causing some major malfunctions of the X
         server for me, possibly related to PTYs.  For example, cat'ing a
         large file in a gnome terminal hangs the kernel for -minutes- in a
         loop of what looks like flush_to_ldisc/workqueue code, (some ftrace
         data in the quoted bits further down).
      
         ...
      
         Some more data: It -looks- like what happens is that the
         flush_to_ldisc work queue entry constantly re-queues itself (because
         the PTY is full ?) and the workqueue thread will basically loop
         forver calling it without ever scheduling, thus starving the consumer
         process that could have emptied the PTY."
      
      which is pretty much exactly the problem we fixed in a5660b41.
      
      Milton Miller pointed out the 'unsigned int' issue.
      Reported-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Reported-by: default avatarMilton Miller <miltonm@bga.com>
      Cc: Stefan Bigler <stefan.bigler@keymile.com>
      Cc: Toby Gray <toby.gray@realvnc.com>
      Cc: Felipe Balbi <balbi@ti.com>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      55db4c64
  17. 22 Apr, 2011 1 commit
  18. 17 Apr, 2011 1 commit
  19. 30 Mar, 2011 1 commit
  20. 17 Feb, 2011 3 commits
  21. 31 Dec, 2010 1 commit
    • Jesper Juhl's avatar
      ISDN, Gigaset: Fix memory leak in do_disconnect_req() · 2393c944
      Jesper Juhl authored
      Hi,
      
      In drivers/isdn/gigaset/capi.c::do_disconnect_req() we will leak the
      memory allocated (with kmalloc) to 'b3cmsg' if the call to alloc_skb()
      fails.
      
      ...
      		b3cmsg = kmalloc(sizeof(*b3cmsg), GFP_KERNEL);
      	allocation here ------^
      		if (!b3cmsg) {
      			dev_err(cs->dev, "%s: out of memory\n", __func__);
      			send_conf(iif, ap, skb, CAPI_MSGOSRESOURCEERR);
      			return;
      		}
      		capi_cmsg_header(b3cmsg, ap->id, CAPI_DISCONNECT_B3, CAPI_IND,
      				 ap->nextMessageNumber++,
      				 cmsg->adr.adrPLCI | (1 << 16));
      		b3cmsg->Reason_B3 = CapiProtocolErrorLayer1;
      		b3skb = alloc_skb(CAPI_DISCONNECT_B3_IND_BASELEN, GFP_KERNEL);
      		if (b3skb == NULL) {
      			dev_err(cs->dev, "%s: out of memory\n", __func__);
      			send_conf(iif, ap, skb, CAPI_MSGOSRESOURCEERR);
      			return;
      	leak here ------^
      ...
      
      This leak is easily fixed by just kfree()'ing the memory allocated to
      'b3cmsg' right before we return. The following patch does that.
      Signed-off-by: default avatarJesper Juhl <jj@chaosbits.net>
      Acked-by: default avatarTilman Schmidt <tilman@imap.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2393c944
  22. 01 Nov, 2010 1 commit
  23. 01 Oct, 2010 7 commits