1. 18 10月, 2008 1 次提交
  2. 14 10月, 2008 1 次提交
    • A
      tty: usb-serial krefs · 4a90f09b
      Alan Cox 提交于
      Use kref in the USB serial drivers so that we don't free tty structures
      from under the URB receive handlers as has historically been the case if
      you were unlucky. This also gives us a framework for general tty drivers to
      use tty_port objects and refcount.
      
      Contains two err->dev_err changes merged together to fix clashes in the
      -next tree.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      4a90f09b
  3. 23 7月, 2008 2 次提交
  4. 25 4月, 2008 3 次提交
  5. 02 2月, 2008 1 次提交
  6. 23 8月, 2007 1 次提交
    • A
      USB: belkin_sa: avoid divide by zero error · e48eb085
      Andy Green 提交于
      The belkin_sa module has a problem coping with a 0 return from
      tty_get_baud_rate() -- the subsequent BELKIN_SA_BAUD macro
      
      drivers/usb/serial/belkin_sa.h:#define BELKIN_SA_BAUD(b) (230400/b)
      
      performs a divide with it leading to the following divide error:
      
      usb 3-1: Belkin / Peracom / GoHubs USB Serial Adapter converter now attached to ttyUSB0
      PM: Adding info for No Bus:usbdev3.3_ep81
      PM: Adding info for No Bus:usbdev3.3_ep01
      PM: Adding info for No Bus:usbdev3.3_ep82
      divide error: 0000 [#1]
      SMP
      Modules linked in: vfat fat iwl3945 mac80211 cfg80211 belkin_sa usbserial usb_storage autofs4 vmnet(P) vmmon(P) aes nf_conntrack_netbios_ns ipt_REJECT nf_conntrack_ipv4 xt_state nf_conntrack nfnetlink xt_tcpudp iptable_filter ip_tables x_tables cpufreq_ondemand acpi_cpufreq video output sbs button dock battery ac arc4 snd_hda_intel ecb blkcipher snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss sr_mod snd_mixer_oss rtc_cmos cdrom iTCO_wdt iTCO_vendor_support snd_pcm rtc_core snd_timer serio_raw b44 ssb rtc_lib parport ata_piix snd soundcore snd_page_alloc mii ata_generic sg ahci libata sd_mod scsi_mod ext3 jbd mbcache ehci_hcd ohci_hcd uhci_hcd
      CPU:    1
      EIP:    0060:[<f8dd1747>]    Tainted: P        VLI
      EFLAGS: 00010246   (2.6.23-rc1 #1)
      EIP is at belkin_sa_set_termios+0x18e/0x5b9 [belkin_sa]
      eax: 00038400   ebx: 00000000   ecx: 00000000   edx: 00000000
      esi: 00038400   edi: 00001cb2   ebp: de49adb0   esp: de49ad6c
      ds: 007b   es: 007b   fs: 00d8  gs: 0033  ss: 0068
      Process minicom (pid: 7306, ti=de49a000 task=eed6c3b0 task.ti=de49a000)
      Stack: d85c74f0 00000046 00000002 00000001 d85c74f0 d85c74f0 00000246 c887c658
             00000001 00000cb0 00000001 00000084 00000000 d01b58c0 f6ba10e0 de49ade8
             de49ae40 de49add0 f8e2526b d85c74b8 ca6e6dbc de49ae40 d85c746c eded72e8
      Call Trace:
       [<c0405f35>] show_trace_log_lvl+0x1a/0x2f
       [<c0405fe5>] show_stack_log_lvl+0x9b/0xa3
       [<c04061a5>] show_registers+0x1b8/0x289
       [<c0406389>] die+0x113/0x246
       [<c0622f98>] do_trap+0x8a/0xa3
       [<c04068dc>] do_divide_error+0x85/0x8f
       [<c0622d6a>] error_code+0x72/0x78
       [<f8e2526b>] serial_set_termios+0x86/0x8d [usbserial]
       [<c0542d33>] set_termios+0x309/0x34c
       [<c0542ece>] n_tty_ioctl+0x158/0x4ba
       [<c054030b>] tty_ioctl+0xc78/0xcd6
       [<c048aea0>] do_ioctl+0x50/0x67
       [<c048b100>] vfs_ioctl+0x249/0x25c
       [<c048b15c>] sys_ioctl+0x49/0x61
       [<c0404ed2>] sysenter_past_esp+0x5f/0x99
       =======================
      Code: 85 c0 79 14 c7 44 24 04 67 1c dd f8 c7 04 24 d4 1e dd f8 e8 96 99 65 c7 8b 46 04 be 00 84 03 00 e8 47 11 77 c7 31 d2 89 c1 89 f0 <f7> f1 66 85 c0 89 c1 b8 01 00 00 00 0f 44 c8 8b 45 d8 85 db 8b
      EIP: [<f8dd1747>] belkin_sa_set_termios+0x18e/0x5b9 [belkin_sa] SS:ESP 0068:de49ad6c
      
      The small patch below should take care of this situation.  Note that my
      kernel was tainted (vmware) but the problem will occur if
      tty_get_baud_rate() ever returns zero and should be taken care of.
      Signed-off-by: NAndy Green <andy@warmcat.com>
      Cc: William Greathouse <wgreathouse@smva.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e48eb085
  7. 13 7月, 2007 2 次提交
  8. 08 2月, 2007 1 次提交
  9. 09 12月, 2006 1 次提交
    • A
      [PATCH] tty: switch to ktermios · 606d099c
      Alan Cox 提交于
      This is the grungy swap all the occurrences in the right places patch that
      goes with the updates.  At this point we have the same functionality as
      before (except that sgttyb() returns speeds not zero) and are ready to
      begin turning new stuff on providing nobody reports lots of bugs
      
      If you are a tty driver author converting an out of tree driver the only
      impact should be termios->ktermios name changes for the speed/property
      setting functions from your upper layers.
      
      If you are implementing your own TCGETS function before then your driver
      was broken already and its about to get a whole lot more painful for you so
      please fix it 8)
      
      Also fill in c_ispeed/ospeed on init for most devices, although the current
      code will do this for you anyway but I'd like eventually to lose that extra
      paranoia
      
      [akpm@osdl.org: bluetooth fix]
      [mp3@de.ibm.com: sclp fix]
      [mp3@de.ibm.com: warning fix for tty3270]
      [hugh@veritas.com: fix tty_ioctl powerpc build]
      [jdike@addtoit.com: uml: fix ->set_termios declaration]
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NMartin Peschke <mp3@de.ibm.com>
      Acked-by: NPeter Oberparleiter <oberpar@de.ibm.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NHugh Dickins <hugh@veritas.com>
      Signed-off-by: NJeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      606d099c
  10. 05 10月, 2006 1 次提交
    • D
      IRQ: Maintain regs pointer globally rather than passing to IRQ handlers · 7d12e780
      David Howells 提交于
      Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
      of passing regs around manually through all ~1800 interrupt handlers in the
      Linux kernel.
      
      The regs pointer is used in few places, but it potentially costs both stack
      space and code to pass it around.  On the FRV arch, removing the regs parameter
      from all the genirq function results in a 20% speed up of the IRQ exit path
      (ie: from leaving timer_interrupt() to leaving do_IRQ()).
      
      Where appropriate, an arch may override the generic storage facility and do
      something different with the variable.  On FRV, for instance, the address is
      maintained in GR28 at all times inside the kernel as part of general exception
      handling.
      
      Having looked over the code, it appears that the parameter may be handed down
      through up to twenty or so layers of functions.  Consider a USB character
      device attached to a USB hub, attached to a USB controller that posts its
      interrupts through a cascaded auxiliary interrupt controller.  A character
      device driver may want to pass regs to the sysrq handler through the input
      layer which adds another few layers of parameter passing.
      
      I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
      main part of the code on FRV and i386, though I can't test most of the drivers.
      I've also done partial conversion for powerpc and MIPS - these at least compile
      with minimal configurations.
      
      This will affect all archs.  Mostly the changes should be relatively easy.
      Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
      
      	struct pt_regs *old_regs = set_irq_regs(regs);
      
      And put the old one back at the end:
      
      	set_irq_regs(old_regs);
      
      Don't pass regs through to generic_handle_irq() or __do_IRQ().
      
      In timer_interrupt(), this sort of change will be necessary:
      
      	-	update_process_times(user_mode(regs));
      	-	profile_tick(CPU_PROFILING, regs);
      	+	update_process_times(user_mode(get_irq_regs()));
      	+	profile_tick(CPU_PROFILING);
      
      I'd like to move update_process_times()'s use of get_irq_regs() into itself,
      except that i386, alone of the archs, uses something other than user_mode().
      
      Some notes on the interrupt handling in the drivers:
      
       (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
           the input_dev struct.
      
       (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
           something different depending on whether it's been supplied with a regs
           pointer or not.
      
       (*) Various IRQ handler function pointers have been moved to type
           irq_handler_t.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
      7d12e780
  11. 13 7月, 2006 1 次提交
  12. 01 7月, 2006 1 次提交
  13. 05 1月, 2006 2 次提交
  14. 29 10月, 2005 3 次提交
  15. 19 4月, 2005 1 次提交
  16. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4