1. 17 Jun, 2006 6 commits
    • Oleg Nesterov's avatar
      [PATCH] arm_timer: remove a racy and obsolete PF_EXITING check · f53ae1dc
      Oleg Nesterov authored
      arm_timer() checks PF_EXITING to prevent BUG_ON(->exit_state)
      in run_posix_cpu_timers().
      
      However, for some reason it does so only for CPUCLOCK_PERTHREAD
      case (which is imho wrong).
      
      Also, this check is not reliable, PF_EXITING could be set on
      another cpu without any locks/barriers just after the check,
      so it can't prevent from attaching the timer to the exiting
      task.
      
      The previous patch makes this check unneeded.
      Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      f53ae1dc
    • Oleg Nesterov's avatar
      [PATCH] run_posix_cpu_timers: remove a bogus BUG_ON() · 30f1e3dd
      Oleg Nesterov authored
      do_exit() clears ->it_##clock##_expires, but nothing prevents
      another cpu to attach the timer to exiting process after that.
      arm_timer() tries to protect against this race, but the check
      is racy.
      
      After exit_notify() does 'write_unlock_irq(&tasklist_lock)' and
      before do_exit() calls 'schedule() local timer interrupt can find
      tsk->exit_state != 0. If that state was EXIT_DEAD (or another cpu
      does sys_wait4) interrupted task has ->signal == NULL.
      
      At this moment exiting task has no pending cpu timers, they were
      cleanuped in __exit_signal()->posix_cpu_timers_exit{,_group}(),
      so we can just return from irq.
      
      John Stultz recently confirmed this bug, see
      
      	http://marc.theaimsgroup.com/?l=linux-kernel&m=115015841413687Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      30f1e3dd
    • Oleg Nesterov's avatar
      [PATCH] check_process_timers: fix possible lockup · 8f17fc20
      Oleg Nesterov authored
      If the local timer interrupt happens just after do_exit() sets PF_EXITING
      (and before it clears ->it_xxx_expires) run_posix_cpu_timers() will call
      check_process_timers() with tasklist_lock + ->siglock held and
      
      	check_process_timers:
      
      		t = tsk;
      		do {
      			....
      
      			do {
      				t = next_thread(t);
      			} while (unlikely(t->flags & PF_EXITING));
      		} while (t != tsk);
      
      the outer loop will never stop.
      
      Actually, the window is bigger.  Another process can attach the timer
      after ->it_xxx_expires was cleared (see the next commit) and the 'if
      (PF_EXITING)' check in arm_timer() is racy (see the one after that).
      Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8f17fc20
    • Stephen Hemminger's avatar
      [PATCH] sky2: netconsole suspend/resume interaction · 88d11360
      Stephen Hemminger authored
      A couple of fixes that should prevent crashes when using netconsole and
      suspend/resume. First, netconsole poll routine shouldn't run unless the
      device is up; second, the NAPI poll should be disabled during suspend.
      
      This is only an issue on sky2, because it has to have one NAPI poll
      routine for both ports on dual port boards. Normal drivers use
      netif_rx_schedule_prep and that checks for netif_running.
      Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      88d11360
    • Jens Axboe's avatar
      [PATCH] Fix missing ret assignment in __bio_map_user() error path · 99172157
      Jens Axboe authored
      If get_user_pages() returns less pages than what we asked for, we jump
      to out_unmap which will return ERR_PTR(ret).  But ret can contain a
      positive number just smaller than local_nr_pages, so be sure to set it
      to -EFAULT always.
      
      Problem found and diagnosed by Damien Le Moal <damien@sdl.hitachi.co.jp>
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      99172157
    • Jens Axboe's avatar
      [PATCH] fix cdrom open · 16070428
      Jens Axboe authored
      Some time ago the cdrom open routine was changed so that we call the
      driver's open routine before checking to see if it is read only.  However,
      if we discovered that a read write open was not possible and the open
      flags required a writable open, we just returned -EROFS without calling
      the driver's release routine.   This seems to work for most cdrom drivers,
      but breaks the Powerpc iSeries virtual cdrom rather badly.
      
      This just inserts the release call in the error path to balance the call
      to "->open()" done by "open_for_data()".
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarJens Axboe <axboe@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      16070428
  2. 14 Jun, 2006 2 commits
  3. 13 Jun, 2006 5 commits
  4. 12 Jun, 2006 14 commits
    • Randy Dunlap's avatar
      [PATCH] alpha: generic hweight build fix · 5e625b08
      Randy Dunlap authored
      From: Randy Dunlap <rdunlap@xenotime.net>
      
      According to include/asm-alpha/bitops.h, only ALPHA_EV67 has hardware
      hweight support, so ALPHA_EV6 needs to use GENERIC_HWEIGHT.
      Signed-off-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Ernst Herzberg <earny@net4u.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      5e625b08
    • Sergey Vlasov's avatar
      [PATCH] tmpfs: Decrement i_nlink correctly in shmem_rmdir() · 86bc843a
      Sergey Vlasov authored
      shmem_rmdir() must undo the increment of i_nlink done in
      shmem_get_inode() for directories, otherwise at least
      IN_DELETE_SELF inotify event generation is broken.
      Signed-off-by: default avatarSergey Vlasov <vsu@altlinux.ru>
      Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      86bc843a
    • Robin H. Johnson's avatar
      [PATCH] tmpfs: time granularity fix for [acm]time going backwards · cfd95a9c
      Robin H. Johnson authored
      I noticed a strange behavior in a tmpfs file system the other day, while
      building packages - occasionally, and seemingly at random, make decided to
      rebuild a target. However, only on tmpfs.
      
      A file would be created, and if checked, it had a sub-second timestamp.
      However, after an utimes related call where sub-seconds should be set, they
      were zeroed instead. In the case that a file was created, and utimes(...,NULL)
      was used on it in the same second, the timestamp on the file moved backwards.
      
      After some digging, I found that this was being caused by tmpfs not having a
      time granularity set, thus inheriting the default 1 second granularity.
      
      Hugh adds: yes, we missed tmpfs when the s_time_gran mods went into 2.6.11.
      Unfortunately, the granularity of CURRENT_TIME, often used in filesystems,
      does not match the default granularity set by alloc_super.  A few more such
      discrepancies have been found, but this is the most important to fix now.
      Signed-off-by: default avatarRobin H. Johnson <robbat2@gentoo.org>
      Acked-by: default avatarAndi Kleen <ak@suse.de>
      Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cfd95a9c
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 · 5f856e8b
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
        [SPARC64]: Do not double-export sys_close() when CONFIG_SOLARIS_EMUL_MODULE
      5f856e8b
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 · a3b5960e
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
        [IPV4]: Increment ipInHdrErrors when TTL expires.
        [TCP]: continued: reno sacked_out count fix
        [DCCP] Ackvec: fix soft lockup in ackvec handling code
      a3b5960e
    • Linus Torvalds's avatar
      Merge master.kernel.org:/home/rmk/linux-2.6-arm · 37b0d1de
      Linus Torvalds authored
      * master.kernel.org:/home/rmk/linux-2.6-arm:
        [ARM] Fix Integrator and Versatile interrupt initialisation
        [ARM] 3546/1: PATCH: subtle lost interrupts bug on i.MX
        [ARM] 3547/1: PXA-OHCI: Allow platforms to specify a power budget
        [ARM] Fix Neponset IRQ handling
      37b0d1de
    • Weidong's avatar
      42d1d52e
    • Linus Torvalds's avatar
      [sky2] Fix sky2 network driver suspend/resume · d374c1c1
      Linus Torvalds authored
      This fixes two independent problems: it would not save the PCI state on
      suspend (and thus try to resume a nonexistent state on resume), and
      while shut off, if an interrupt happened on the same shared irq, the irq
      handler would react very badly to the interrupt status being an invalid
      all-ones state.
      Acked-by: default avatarJeff Garzik <jgarzik@pobox.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d374c1c1
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev · 0e838b72
      Linus Torvalds authored
      * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        [PATCH] sata_mv: grab host lock inside eng_timeout
      0e838b72
    • Aki M Nyrhinen's avatar
      [TCP]: continued: reno sacked_out count fix · 79320d7e
      Aki M Nyrhinen authored
      From: Aki M Nyrhinen <anyrhine@cs.helsinki.fi>
      
      IMHO the current fix to the problem (in_flight underflow in reno)
      is incorrect.  it treats the symptons but ignores the problem. the
      problem is timing out packets other than the head packet when we
      don't have sack. i try to explain (sorry if explaining the obvious).
      
      with sack, scanning the retransmit queue for timed out packets is
      fine because we know which packets in our retransmit queue have been
      acked by the receiver.
      
      without sack, we know only how many packets in our retransmit queue the
      receiver has acknowledged, but no idea which packets.
      
      think of a "typical" slow-start overshoot case, where for example
      every third packet in a window get lost because a router buffer gets
      full.
      
      with sack, we check for timeouts on those every third packet (as the
      rest have been sacked). the packet counting works out and if there
      is no reordering, we'll retransmit exactly the packets that were 
      lost.
      
      without sack, however, we check for timeout on every packet and end up
      retransmitting consecutive packets in the retransmit queue. in our
      slow-start example, 2/3 of those retransmissions are unnecessary. these
      unnecessary retransmissions eat the congestion window and evetually
      prevent fast recovery from continuing, if enough packets were lost.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      79320d7e
    • Andrea Bittau's avatar
      [DCCP] Ackvec: fix soft lockup in ackvec handling code · afec35e3
      Andrea Bittau authored
      A soft lockup existed in the handling of ack vector records.
      Specifically, when a tail of the list of ack vector records was
      removed, it was possible to end up iterating infinitely on an element
      of the tail.
      Signed-off-by: default avatarAndrea Bittau <a.bittau@cs.ucl.ac.uk>
      Signed-off-by: default avatarIan McDonald <ian.mcdonald@jandi.co.nz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      afec35e3
    • David S. Miller's avatar
      [SPARC64]: Do not double-export sys_close() when CONFIG_SOLARIS_EMUL_MODULE · ccefb5f3
      David S. Miller authored
      It is already exported by fs/open.c
      
      Noticed by Ben Collins.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ccefb5f3
    • Paul Mackerras's avatar
      [PATCH] Fix for the PPTP hangs that have been reported · 289a1e99
      Paul Mackerras authored
      People have been reporting that PPP connections over ptys, such as
      used with PPTP, will hang randomly when transferring large amounts of
      data, for instance in http://bugzilla.kernel.org/show_bug.cgi?id=6530.
      I have managed to reproduce the problem, and the patch below fixes the
      actual cause.
      
      The problem is not in fact in ppp_async.c but in n_tty.c.  What
      happens is that when pptp reads from the pty, we call read_chan() in
      drivers/char/n_tty.c on the master side of the pty.  That copies all
      the characters out of its buffer to userspace and then calls
      check_unthrottle(), which calls the pty unthrottle routine, which
      calls tty_wakeup on the slave side, which calls ppp_asynctty_wakeup,
      which calls tasklet_schedule.  So far so good.  Since we are in
      process context, the tasklet runs immediately and calls
      ppp_async_process(), which calls ppp_async_push, which calls the
      tty->driver->write function to send some more output.
      
      However, tty->driver->write() returns zero, because the master
      tty->receive_room is still zero.  We haven't returned from
      check_unthrottle() yet, and read_chan() only updates tty->receive_room
      _after_ calling check_unthrottle.  That means that the driver->write
      call in ppp_async_process() returns 0.  That would be fine if we were
      going to get a subsequent wakeup call, but we aren't (we just had it,
      and the buffer is now empty).
      
      The solution is for n_tty.c to update tty->receive_room _before_
      calling the driver unthrottle routine.  The patch below does this.
      With this patch I was able to transfer a 900MB file over a PPTP
      connection (taking about 25 minutes), whereas without the patch the
      connection would always stall in under a minute.
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      289a1e99
    • Mark Lord's avatar
      [PATCH] sata_mv: grab host lock inside eng_timeout · 2f9719b6
      Mark Lord authored
      Bug fix:  mv_eng_timeout() calls mv_err_intr() without first grabbing the host lock,
      which can lead to all sorts of interesting scenarios.
      
      This whole error-handling portion of sata_mv is nasty (and will get fixed for
      the new EH stuff), but for now this patch will help keep it on life-support.
      Signed-off-by: default avatarMark Lord <liml@rtr.ca>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      2f9719b6
  5. 11 Jun, 2006 8 commits
  6. 10 Jun, 2006 5 commits