1. 23 10月, 2009 1 次提交
    • X
      isdn: fix possible circular locking dependency · 2bd9af04
      Xiaotian Feng 提交于
      There's a circular locking dependency:
      
      ---> isdn_net_get_locked_lp
          --->lock &nd->queue_lock
          --->lock &nd->queue->xmit_lock
          .....................
          ---->unlock &nd->queue_lock
      
      ---> isdn_net_writebuf_skb (called with &nd->queue->xmit_lock locked)
          ---->isdn_net_inc_frame_cnt
               ---->isdn_net_device_busy
                    ----> lock &nd->queue_lock
      
      This will trigger lockdep warnings:
      
       =======================================================
       [ INFO: possible circular locking dependency detected ]
       2.6.32-rc4-testing #7
       -------------------------------------------------------
       ipppd/28379 is trying to acquire lock:
       (&netdev->queue_lock){......}, at: [<e62ad0fd>] isdn_net_device_busy+0x2c/0x74 [isdn]
      
       but task is already holding lock:
       (&netdev->local->xmit_lock){+.....}, at: [<e62aefc2>] isdn_net_write_super+0x3f/0x6e [isdn]
      
       which lock already depends on the new lock.
       .......
      
       We don't need to lock nd->queue->xmit_lock to protect single
      isdn_net_lp_busy(). This can fix above lockdep warnings.
      Reported-and-tested-by: NTilman Schmidt <tilman@imap.cc>
      Signed-off-by: NXiaotian Feng <xtfeng@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2bd9af04
  2. 29 9月, 2009 1 次提交
    • R
      isdn: fix netjet/isdnhdlc build errors · 8823ad31
      Randy Dunlap 提交于
      Commit cb3824ba didn't fix this problem.
      
      Fix build errors in netjet, using isdnhdlc module:
      
      drivers/built-in.o: In function `mode_tiger':
      netjet.c:(.text+0x1ca0c7): undefined reference to `isdnhdlc_rcv_init'
      netjet.c:(.text+0x1ca0d4): undefined reference to `isdnhdlc_out_init'
      drivers/built-in.o: In function `fill_dma':
      netjet.c:(.text+0x1ca2bd): undefined reference to `isdnhdlc_encode'
      drivers/built-in.o: In function `read_dma':
      netjet.c:(.text+0x1ca614): undefined reference to `isdnhdlc_decode'
      drivers/built-in.o: In function `nj_irq':
      netjet.c:(.text+0x1cb07a): undefined reference to `isdnhdlc_encode'
      
      drivers/built-in.o: In function `isdnhdlc_decode':
      (.text+0x1c2088): undefined reference to `crc_ccitt_table'
      drivers/built-in.o: In function `isdnhdlc_encode':
      (.text+0x1c2339): undefined reference to `crc_ccitt_table'
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8823ad31
  3. 21 9月, 2009 1 次提交
  4. 01 9月, 2009 1 次提交
  5. 26 7月, 2009 4 次提交
  6. 13 7月, 2009 1 次提交
  7. 06 7月, 2009 2 次提交
  8. 17 6月, 2009 1 次提交
  9. 13 6月, 2009 1 次提交
  10. 12 6月, 2009 1 次提交
  11. 18 5月, 2009 1 次提交
  12. 27 1月, 2009 1 次提交
  13. 15 1月, 2009 2 次提交
  14. 08 1月, 2009 1 次提交
  15. 04 12月, 2008 1 次提交
  16. 20 11月, 2008 1 次提交
  17. 17 11月, 2008 1 次提交
  18. 14 11月, 2008 1 次提交
  19. 30 10月, 2008 1 次提交
  20. 22 9月, 2008 1 次提交
  21. 13 7月, 2008 1 次提交
  22. 09 7月, 2008 2 次提交
  23. 21 6月, 2008 1 次提交
  24. 30 4月, 2008 2 次提交
  25. 28 4月, 2008 1 次提交
  26. 14 4月, 2008 1 次提交
  27. 06 3月, 2008 1 次提交
  28. 05 3月, 2008 1 次提交
  29. 07 2月, 2008 2 次提交
  30. 04 1月, 2008 2 次提交
    • M
      [ISDN]: i4l: Fix DLE handling for i4l-audio · 7fde4d77
      Matthias Goebl 提交于
      The DLE handling in i4l-audio seems to be broken.
      
      It produces spurious DLEs so asterisk 1.2.24 with chan_modem_i4l
      gets irritated, the error message is:
      "chan_modem_i4l.c:450 i4l_read: Value of escape is ^ (17)".
      -> There shouldn't be a DLE-^.
      If a spurious DLE-ETX occurs, the audio connection even dies.
      I use a "AVM Fritz!PCI" isdn card.
      
      I found two issues that only appear if ISDN_AUDIO_SKB_DLECOUNT(skb) > 0:
      - The loop in isdn_tty.c:isdn_tty_try_read() doesn't escape a DLE if it's
        the last character.
      
      - The loop in isdn_common.c:isdn_readbchan_tty() doesn't copy its characters,
        it only remembers the last one ("last = *p;").
      
        Compare it with the loop in isdn_common.c:isdn_readbchan(), that *does*
        copy them ("*cp++ = *p;") correctly.
        The special handling of the "last" character made it more difficult.
        I compared it to linux-2.4.19: There was no "last"-handling and both loops
        did escape and copy all characters correctly.
      Signed-off-by: NMatthias Goebl <matthias.goebl@goebl.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7fde4d77
    • M
      [ISDN] i4l: 'NO CARRIER' message lost after ldisc flush · 00409bb0
      Matthias Goebl 提交于
      The ISDN tty layer doesn't produce a 'NO CARRIER' message after hangup.
      
      I suppose it broke when tty_buffer_flush() has been added to
      tty_ldisc_flush() in the commit below.
      
      For isdn_tty_modem_result(RESULT_NO_CARRIER..) the
      message inserted via isdn_tty_at_cout() -> tty_insert_flip_char()
      is flushed immediately by tty_ldisc_flush() -> tty_buffer_flush().
      More annoyingly, the audio abort sequence DLE-ETX is also lost.
      
      This patch fixes only active audio connections, because I assume that nobody
      changes the line discipline for audio.
      
      For non-audio connections the problem remains.
      Maybe we can remove the tty_ldisc_flush() in isdn_tty_modem_result()
      at all because it's done at tty_close?
      
      On Mon, May 07, 2007 at 04:05:57PM -0500, Paul Fulghum wrote:
      > Flush the tty flip buffer when the line discipline
      > input queue is flushed, including the user call
      > tcflush(TCIFLUSH/TCIOFLUSH). This prevents unexpected
      > stale data after a user application calls tcflush().
      >
      > Cc: Alan Cox <alan@lxorguk.org.uk>
      > Cc: Antonino Ingargiola <tritemio@gmail.com>
      > Signed-off-by: Paul Fulghum <paulkf@microgate.com>
      >
      > --- a/drivers/char/tty_io.c	2007-05-04 05:46:55.000000000 -0500
      > +++ b/drivers/char/tty_io.c	2007-05-05 03:23:46.000000000 -0500
      > @@ -1240,6 +1263,7 @@ void tty_ldisc_flush(struct tty_struct *
      >  			ld->flush_buffer(tty);
      >  		tty_ldisc_deref(ld);
      >  	}
      > +	tty_buffer_flush(tty);
      [..]
      Signed-off-by: NMatthias Goebl <matthias.goebl@goebl.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      00409bb0
  31. 04 12月, 2007 1 次提交