1. 29 Dec, 2006 1 commit
    • Linus Torvalds's avatar
      VM: Fix nasty and subtle race in shared mmap'ed page writeback · 7658cc28
      Linus Torvalds authored
      The VM layer (on the face of it, fairly reasonably) expected that when
      it does a ->writepage() call to the filesystem, it would write out the
      full page at that point in time.  Especially since it had earlier marked
      the whole page dirty with "set_page_dirty()".
      
      But that isn't actually the case: ->writepage() does not actually write
      a page, it writes the parts of the page that have been explicitly marked
      dirty before, *and* that had not got written out for other reasons since
      the last time we told it they were dirty.
      
      That last caveat is the important one.
      
      Which _most_ of the time ends up being the whole page (since we had
      called "set_page_dirty()" on the page earlier), but if the filesystem
      had done any dirty flushing of its own (for example, to honor some
      internal write ordering guarantees), it might end up doing only a
      partial page IO (or none at all) when ->writepage() is actually called.
      
      That is the correct thing in general (since we actually often _want_
      only the known-dirty parts of the page to be written out), but the
      shared dirty page handling had implicitly forgotten about these details,
      and had a number of cases where it was doing just the "->writepage()"
      part, without telling the low-level filesystem that the whole page might
      have been re-dirtied as part of being mapped writably into user space.
      
      Since most of the time the FS did actually write out the full page, we
      didn't notice this for a loong time, and this needed some really odd
      patterns to trigger.  But it caused occasional corruption with rtorrent
      and with the Debian "apt" database, because both use shared mmaps to
      update the end result.
      
      This fixes it. Finally. After way too much hair-pulling.
      Acked-by: default avatarNick Piggin <nickpiggin@yahoo.com.au>
      Acked-by: default avatarMartin J. Bligh <mbligh@google.com>
      Acked-by: default avatarMartin Michlmayr <tbm@cyrius.com>
      Acked-by: default avatarMartin Johansson <martin@fatbob.nu>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Acked-by: default avatarAndrei Popa <andrei.popa@i-neo.ro>
      Cc: High Dickins <hugh@veritas.com>
      Cc: Andrew Morton <akpm@osdl.org>,
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Segher Boessenkool <segher@kernel.crashing.org>
      Cc: David Miller <davem@davemloft.net>
      Cc: Arjan van de Ven <arjan@infradead.org>
      Cc: Gordon Farquharson <gordonfarquharson@gmail.com>
      Cc: Guillaume Chazarain <guichaz@yahoo.fr>
      Cc: Theodore Tso <tytso@mit.edu>
      Cc: Kenneth Cheng <kenneth.w.chen@intel.com>
      Cc: Tobias Diedrich <ranma@tdiedrich.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7658cc28
  2. 24 Dec, 2006 2 commits
  3. 23 Dec, 2006 5 commits
    • OGAWA Hirofumi's avatar
      [PATCH] arch/i386/pci/mmconfig.c tlb flush fix · 8d1c4819
      OGAWA Hirofumi authored
      We use the fixmap for accessing pci config space in pci_mmcfg_read/write().
      The problem is in pci_exp_set_dev_base(). It is caching a last
      accessed address to avoid calling set_fixmap_nocache() whenever
      pci_mmcfg_read/write() is used.
      
        static inline void pci_exp_set_dev_base(int bus, int devfn)
        {
      	u32 dev_base = base | (bus << 20) | (devfn << 12);
      	if (dev_base != mmcfg_last_accessed_device) {
      		mmcfg_last_accessed_device = dev_base;
      		set_fixmap_nocache(FIX_PCIE_MCFG, dev_base);
      	}
        }
      
                  cpu0                                        cpu1
        ---------------------------------------------------------------------------
          pci_mmcfg_read("device-A")
              pci_exp_set_dev_base()
                  set_fixmap_nocache()
                                                    pci_mmcfg_read("device-B")
                                                        pci_exp_set_dev_base()
                                                            set_fixmap_nocache()
          pci_mmcfg_read("device-B")
              pci_exp_set_dev_base()
                  /* doesn't flush tlb */
      
      But if cpus accessed the above order, the second pci_mmcfg_read() on
      cpu0 doesn't flush the TLB, because "mmcfg_last_accessed_device" is
      device-B.  So, second pci_mmcfg_read() on cpu0 accesses a device-A via
      a previous TLB cache. This problem became the cause of several strange
      behavior.
      
      This patches fixes this situation by adds "mmcfg_last_accessed_cpu" check.
      
      [ Alternatively, we could make a per-cpu mapping area or something. Not
        that it's probably worth it, but if we wanted to avoid all locking and
        instead just disable preemption, that would be the way to go. --Linus ]
      Signed-off-by: default avatarOGAWA Hirofumi <hogawa@miraclelinux.com>
      Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8d1c4819
    • Ingo Molnar's avatar
      [PATCH] suspend: fix suspend on single-CPU systems · e1d9fd2e
      Ingo Molnar authored
      Clark Williams reported that suspend doesnt work on his laptop on
      2.6.20-rc1-rt kernels. The bug was introduced by the following cleanup
      commit:
      
       commit 112cecb2
       Author: Siddha, Suresh B <suresh.b.siddha@intel.com>
       Date:   Wed Dec 6 20:34:31 2006 -0800
      
          [PATCH] suspend: don't change cpus_allowed for task initiating the suspend
      
      because with this change 'error' is not initialized to 0 anymore, if
      there are no other online CPUs. (i.e. if the system is single-CPU).
      
      the fix is the initialize it to 0. The really weird thing is that my
      version of gcc does not warn about this non-initialized variable
      situation ...
      
      (also fix the kernel printk in the error branch, it was missing a
       newline)
      Reported-by: default avatarClark Williams <williams@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      e1d9fd2e
    • Linus Torvalds's avatar
      Fix reiserfs after "test_clear_page_dirty()" removal · ffaa8200
      Linus Torvalds authored
      Thanks to Len Brown for testing this fix, since while they have in the
      past, none of my machines run reiserfs at the moment.
      
      Cc: Vladimir V. Saveliev <vs@namesys.com>
      Acked-by: default avatarLen Brown <lenb@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ffaa8200
    • Linus Torvalds's avatar
      Clean up and export cancel_dirty_page() to modules · 8368e328
      Linus Torvalds authored
      Make cancel_dirty_page() act more like all the other dirty and writeback
      accounting functions: test for "mapping" being NULL, and do the
      NR_FILE_DIRY accounting purely based on mapping_cap_account_dirty()).
      
      Also, add it to the exports, so that modular filesystems can use it.
      Acked-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8368e328
    • Linus Torvalds's avatar
      Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 · 18ed1c05
      Linus Torvalds authored
      * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (68 commits)
        ACPI: replace kmalloc+memset with kzalloc
        ACPI: Add support for acpi_load_table/acpi_unload_table_id
        fbdev: update after backlight argument change
        ACPI: video: Add dev argument for backlight_device_register
        ACPI: Implement acpi_video_get_next_level()
        ACPI: Kconfig - depend on PM rather than selecting it
        ACPI: fix NULL check in drivers/acpi/osl.c
        ACPI: make drivers/acpi/ec.c:ec_ecdt static
        ACPI: prevent processor module from loading on failures
        ACPI: fix single linked list manipulation
        ACPI: ibm_acpi: allow clean removal
        ACPI: fix git automerge failure
        ACPI: ibm_acpi: respond to workqueue update
        ACPI: dock: add uevent to indicate change in device status
        ACPI: ec: Lindent once again
        ACPI: ec: Change #define to enums there possible.
        ACPI: ec: Style changes.
        ACPI: ec: Acquire Global Lock under EC mutex.
        ACPI: ec: Drop udelay() from poll mode. Loop by reading status field instead.
        ACPI: ec: Rename gpe_bit to gpe
        ...
      18ed1c05
  4. 22 Dec, 2006 32 commits
    • Marcel Holtmann's avatar
      [PATCH] Call init_timer() for ISDN PPP CCP reset state timer · dab6df63
      Marcel Holtmann authored
      The function isdn_ppp_ccp_reset_alloc_state() sets ->timer.function
      and ->timer.data and later on calls add_timer() with no init_timer()
      ever done.
      
      Noted by Al Viro.
      Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Karsten Keil <kkeil@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      dab6df63
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 · f2a67a57
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
        [UDP]: Fix reversed logic in udp_get_port().
        [IPV6]: Dumb typo in generic csum_ipv6_magic()
        [SCTP]: make 2 functions static
        [SCTP]: Fix typo adaption -> adaptation as per the latest API draft.
        [SCTP]: Don't export include/linux/sctp.h to userspace.
        [TCP]: Fix ambiguity in the `before' relation.
        [ATM] drivers/atm/fore200e.c: Cleanups.
        [ATM]: Remove dead ATM_TNETA1570 option.
        NetLabel: correctly fill in unused CIPSOv4 level and category mappings
        NetLabel: perform input validation earlier on CIPSOv4 DOI add ops
      f2a67a57
    • Jens Axboe's avatar
      [PATCH] cfq-iosched: tighten allow merge criteria · 719d3402
      Jens Axboe authored
      The logic in cfq_allow_merge() wasn't clear enough - basically allow
      merging for the same queues only.  Do a fast check for 'rq and bio both
      sync/async' before doing the cfqq hash lookup.
      
      This is verified to work with the fixed elv_try_merge() from commit
      bb4067e3.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      719d3402
    • David S. Miller's avatar
      [UDP]: Fix reversed logic in udp_get_port(). · 5c668704
      David S. Miller authored
      When this code was converted to use sk_for_each() the
      logic for the "best hash chain length" code was reversed,
      breaking everything.
      
      The original code was of the form:
      
      			size = 0;
      			do {
      				if (++size >= best_size_so_far)
      					goto next;
      			} while ((sk = sk->next) != NULL);
      			best_size_so_far = size;
      			best = result;
      		next:;
      
      and this got converted into:
      
      			sk_for_each(sk2, node, head)
      				if (++size < best_size_so_far) {
      					best_size_so_far = size;
      					best = result;
      				}
      
      Which does something very very different from the original.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5c668704
    • Al Viro's avatar
      [IPV6]: Dumb typo in generic csum_ipv6_magic() · b23e3536
      Al Viro authored
      ... duh
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b23e3536
    • Adrian Bunk's avatar
      [SCTP]: make 2 functions static · 24123186
      Adrian Bunk authored
      This patch makes the following needlessly global functions static:
      - ipv6.c: sctp_inet6addr_event()
      - protocol.c: sctp_inetaddr_event()
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      Signed-off-by: default avatarSridhar Samudrala <sri@us.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      24123186
    • Ivan Skytte Jorgensen's avatar
    • Sridhar Samudrala's avatar
      [SCTP]: Don't export include/linux/sctp.h to userspace. · a3f7f142
      Sridhar Samudrala authored
      This file contains protocol definitions and there are no SCTP apps
      that use this file.
      Signed-off-by: default avatarSridhar Samudrala <sri@us.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a3f7f142
    • Gerrit Renker's avatar
      [TCP]: Fix ambiguity in the `before' relation. · 9a036b9c
      Gerrit Renker authored
      While looking at DCCP sequence numbers, I stumbled over a problem with
      the following definition of before in tcp.h:
      
      static inline int before(__u32 seq1, __u32 seq2)
      {
              return (__s32)(seq1-seq2) < 0;
      }
      
      Problem: This definition suffers from an an ambiguity, i.e. always
      
                 before(a, (a + 2^31) % 2^32)) = 1
                 before((a + 2^31) % 2^32), a) = 1
      
               In text: when the difference between a and b amounts to 2^31,
               a is always considered `before' b, the function can not decide.
               The reason is that implicitly 0 is `before' 1 ... 2^31-1 ... 2^31
      
      Solution: There is a simple fix, by defining before in such a way that
                0 is no longer `before' 2^31, i.e. 0 `before' 1 ... 2^31-1
                By not using the middle between 0 and 2^32, before can be made
                unambiguous.
                This is achieved by testing whether seq2-seq1 > 0 (using signed
                32-bit arithmetic).
      
      I attach a patch to codify this. Also the `after' relation is basically
      a redefinition of `before', it is now defined as a macro after before.
      Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9a036b9c
    • Adrian Bunk's avatar
      [ATM] drivers/atm/fore200e.c: Cleanups. · 1f8a5fb8
      Adrian Bunk authored
      This patch contains the following transformations from custom functions
      to standard kernel version:
      - fore200e_kmalloc() -> kzalloc()
      - fore200e_kfree() -> kfree()
      - fore200e_swap() -> cpu_to_be32()
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f8a5fb8
    • Adrian Bunk's avatar
      [ATM]: Remove dead ATM_TNETA1570 option. · 52a91071
      Adrian Bunk authored
      This patch removes the unconverted ATM_TNETA1570 option that also lacks
      any code in the kernel.
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52a91071
    • Paul Moore's avatar
      NetLabel: correctly fill in unused CIPSOv4 level and category mappings · caff5b6a
      Paul Moore authored
      Back when the original NetLabel patches were being changed to use Netlink
      attributes correctly some code was accidentially dropped which set all of the
      undefined CIPSOv4 level and category mappings to a sentinel value.  The result
      is the mappings data in the kernel contains bogus mappings which always map to
      zero.  This patch restores the old/correct behavior by initializing the mapping
      data to the correct sentinel value.
      Signed-off-by: default avatarPaul Moore <paul.moore@hp.com>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      caff5b6a
    • Paul Moore's avatar
      NetLabel: perform input validation earlier on CIPSOv4 DOI add ops · 1fd2a25b
      Paul Moore authored
      There are a couple of cases where the user input for a CIPSOv4 DOI add
      operation was not being done soon enough; the result was unexpected behavior
      which was resulting in oops/panics/lockups on some platforms.  This patch moves
      the existing input validation code earlier in the code path to protect against
      bogus user input.
      Signed-off-by: default avatarPaul Moore <paul.moore@hp.com>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      1fd2a25b
    • Peter Zijlstra's avatar
      [PATCH] Fix up page_mkclean_one(): virtual caches, s390 · c2fda5fe
      Peter Zijlstra authored
       - add flush_cache_page() for all those virtual indexed cache
         architectures.
      
       - handle s390.
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c2fda5fe
    • Peter Korsgaard's avatar
      [PATCH] serial/uartlite: Only enable port if request_port succeeded · e21654a7
      Peter Korsgaard authored
      The uartlite driver used to always enable the port even if request_port
      failed causing havoc. This patch fixes it.
      Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      e21654a7
    • Eric W. Biederman's avatar
      [PATCH] Fix reparenting to the same thread group. (take 2) · b2b2cbc4
      Eric W. Biederman authored
      This patch fixes the case when we reparent to a different thread in the
      same thread group.  This modifies the code so that we do not send
      signals and do not change the signal to send to SIGCHLD unless we have
      change the thread group of our parents.  It also suppresses sending
      pdeath_sig in this cas as well since the result of geppid doesn't
      change.
      
      Thanks to Oleg for spotting my bug of only fixing this for non-ptraced
      tasks.
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Albert Cahalan <acahalan@gmail.com>
      Cc: Andrew Morton <akpm@osdl.org>
      Cc: Roland McGrath <roland@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Coywolf Qi Hunt <qiyong@fc-cn.com>
      Acked-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      b2b2cbc4
    • Andrew Morton's avatar
      [PATCH] build compile.h earlier · ef129412
      Andrew Morton authored
      compile.h is created super-late in the build.  But proc_misc.c want to include
      it, and it's generally not sane to have a header file in include/linux be
      created at the end of the build: it's either not present or, worse, wrong for
      most of the build.
      
      So the patch arranges for compile.h to be built at the start of the build
      process.  It also consolidates the compile.h rules with those for version.h
      and utsname.h, so they all get built together.
      
      I hope.  My chances of having got this right are about 2%.
      
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ef129412
    • Ingo Molnar's avatar
      [PATCH] sched: fix bad missed wakeups in the i386, x86_64, ia64, ACPI and APM idle code · 0888f06a
      Ingo Molnar authored
      Fernando Lopez-Lezcano reported frequent scheduling latencies and audio
      xruns starting at the 2.6.18-rt kernel, and those problems persisted all
      until current -rt kernels. The latencies were serious and unjustified by
      system load, often in the milliseconds range.
      
      After a patient and heroic multi-month effort of Fernando, where he
      tested dozens of kernels, tried various configs, boot options,
      test-patches of mine and provided latency traces of those incidents, the
      following 'smoking gun' trace was captured by him:
      
                       _------=> CPU#
                      / _-----=> irqs-off
                     | / _----=> need-resched
                     || / _---=> hardirq/softirq
                     ||| / _--=> preempt-depth
                     |||| /
                     |||||     delay
         cmd     pid ||||| time  |   caller
            \   /    |||||   \   |   /
        IRQ_19-1479  1D..1    0us : __trace_start_sched_wakeup (try_to_wake_up)
        IRQ_19-1479  1D..1    0us : __trace_start_sched_wakeup <<...>-5856> (37 0)
        IRQ_19-1479  1D..1    0us : __trace_start_sched_wakeup (c01262ba 0 0)
        IRQ_19-1479  1D..1    0us : resched_task (try_to_wake_up)
        IRQ_19-1479  1D..1    0us : __spin_unlock_irqrestore (try_to_wake_up)
        ...
        <idle>-0     1...1   11us!: default_idle (cpu_idle)
        ...
        <idle>-0     0Dn.1  602us : smp_apic_timer_interrupt (c0103baf 1 0)
        ...
         <...>-5856  0D..2  618us : __switch_to (__schedule)
         <...>-5856  0D..2  618us : __schedule <<idle>-0> (20 162)
         <...>-5856  0D..2  619us : __spin_unlock_irq (__schedule)
         <...>-5856  0...1  619us : trace_stop_sched_switched (__schedule)
         <...>-5856  0D..1  619us : trace_stop_sched_switched <<...>-5856> (37 0)
      
      what is visible in this trace is that CPU#1 ran try_to_wake_up() for
      PID:5856, it placed PID:5856 on CPU#0's runqueue and ran resched_task()
      for CPU#0. But it decided to not send an IPI that no CPU - due to
      TS_POLLING. But CPU#0 never woke up after its NEED_RESCHED bit was set,
      and only rescheduled to PID:5856 upon the next lapic timer IRQ. The
      result was a 600+ usecs latency and a missed wakeup!
      
      the bug turned out to be an idle-wakeup bug introduced into the mainline
      kernel this summer via an optimization in the x86_64 tree:
      
          commit 495ab9c0
          Author: Andi Kleen <ak@suse.de>
          Date:   Mon Jun 26 13:59:11 2006 +0200
      
          [PATCH] i386/x86-64/ia64: Move polling flag into thread_info_status
      
          During some profiling I noticed that default_idle causes a lot of
          memory traffic. I think that is caused by the atomic operations
          to clear/set the polling flag in thread_info. There is actually
          no reason to make this atomic - only the idle thread does it
          to itself, other CPUs only read it. So I moved it into ti->status.
      
      the problem is this type of change:
      
              if (!hlt_counter && boot_cpu_data.hlt_works_ok) {
      -               clear_thread_flag(TIF_POLLING_NRFLAG);
      +               current_thread_info()->status &= ~TS_POLLING;
                      smp_mb__after_clear_bit();
                      while (!need_resched()) {
                              local_irq_disable();
      
      this changes clear_thread_flag() to an explicit clearing of TS_POLLING.
      clear_thread_flag() is defined as:
      
              clear_bit(flag, &ti->flags);
      
      and clear_bit() is a LOCK-ed atomic instruction on all x86 platforms:
      
        static inline void clear_bit(int nr, volatile unsigned long * addr)
        {
                __asm__ __volatile__( LOCK_PREFIX
                        "btrl %1,%0"
      
      hence smp_mb__after_clear_bit() is defined as a simple compile barrier:
      
        #define smp_mb__after_clear_bit()       barrier()
      
      but the explicit TS_POLLING clearing introduced by the patch:
      
      +               current_thread_info()->status &= ~TS_POLLING;
      
      is not an atomic op! So the clearing of the TS_POLLING bit is freely
      reorderable with the reading of the NEED_RESCHED bit - and both now
      reside in different memory addresses.
      
      CPU idle wakeup very much depends on ordered memory ops, the clearing of
      the TS_POLLING flag must always be done before we test need_resched()
      and hit the idle instruction(s). [Symmetrically, the wakeup code needs
      to set NEED_RESCHED before it tests the TS_POLLING flag, so memory
      ordering is paramount.]
      
      Fernando's dual-core Athlon64 system has a sufficiently advanced memory
      ordering model so that it triggered this scenario very often.
      
      ( And it also turned out that the reason why these latencies never
        triggered on my testsystems is that i routinely use idle=poll, which
        was the only idle variant not affected by this bug. )
      
      The fix is to change the smp_mb__after_clear_bit() to an smp_mb(), to
      act as an absolute barrier between the TS_POLLING write and the
      NEED_RESCHED read. This affects almost all idling methods (default,
      ACPI, APM), on all 3 x86 architectures: i386, x86_64, ia64.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Tested-by: default avatarFernando Lopez-Lezcano <nando@ccrma.Stanford.EDU>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      0888f06a
    • Hisashi Hifumi's avatar
      [PATCH] jbd: wait for already submitted t_sync_datalist buffer to complete · 6f5a9da1
      Hisashi Hifumi authored
      In the current jbd code, if a buffer on BJ_SyncData list is dirty and not
      locked, the buffer is refiled to BJ_Locked list, submitted to the IO and
      waited for IO completion.
      
      But the fsstress test showed the case that when a buffer was already
      submitted to the IO just before the buffer_dirty(bh) check, the buffer was
      not waited for IO completion.
      
      Following patch solves this problem.  If it is assumed that a buffer is
      submitted to the IO before the buffer_dirty(bh) check and still being
      written to disk, this buffer is refiled to BJ_Locked list.
      Signed-off-by: default avatarHisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
      Cc: Jan Kara <jack@ucw.cz>
      Cc: "Stephen C. Tweedie" <sct@redhat.com>
      Cc: <linux-ext4@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      6f5a9da1
    • Ben Dooks's avatar
      [PATCH] fix s3c24xx gpio driver (include linux/workqueue.h) · 6d3a25f1
      Ben Dooks authored
      The general gpio driver includes seem to now depend on having
      <linux/workqueue.h> included before they are.
      Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      6d3a25f1
    • NeilBrown's avatar
      [PATCH] md: fix a few problems with the interface (sysfs and ioctl) to md · 3f9d7b0d
      NeilBrown authored
      While developing more functionality in mdadm I found some bugs in md...
      
      - When we remove a device from an inactive array (write 'remove' to
        the 'state' sysfs file - see 'state_store') would should not
        update the superblock information - as we may not have
        read and processed it all properly yet.
      
      - initialise all raid_disk entries to '-1' else the 'slot sysfs file
        will claim '0' for all devices in an array before the array is
        started.
      
      - all '\n' not to be present at the end of words written to
        sysfs files
      
      - when we use SET_ARRAY_INFO to set the md metadata version,
        set the flag to say that there is persistant metadata.
      
      - allow GET_BITMAP_FILE to be called on an array that hasn't
        been started yet.
      Signed-off-by: default avatarNeil Brown <neilb@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3f9d7b0d
    • Andrew Morton's avatar
      [PATCH] increase CARDBUS_MEM_SIZE · fe0e5c4d
      Andrew Morton authored
      Linus sayeth:
      
      Google knows everything, and finds, on MS own site no less:
      
        "Windows 2000 default resources:
      
         One 4K memory window
      
         One 2 MB memory window
      
         Two 256-byte I/O windows"
      
      which is clearly utterly bogus and insufficient. But Microsoft apparently
      realized this, and:
      
        "Windows XP default resources:
      
         Because one memory window of 4K and one window of 2 MB are not
         sufficient for CardBus controllers in many configurations, Windows XP
         allocates larger memory windows to CardBus controllers where possible.
         However, resource windows are static (that is, the operating system
         does not dynamically allocate larger memory windows if new devices
         appear.) Under Windows XP, CardBus controllers will be assigned the
         following resources:
      
         One 4K memory window, as in Windows 2000
      
         64 MB memory, if that amount of memory is available. If 64 MB is not
         available the controller will receive 32 MB; if 32 MB is not available,
         the controller will receive 16 MB; if 16 MB is not available, the
         bridge will receive 8 MB; and so on down to a minimum assignment of 1
         MB in configurations where memory is too constrained for the operating
         system to provide a larger window.
      
         Two 256-byte I/O windows"
      
      So I think we have our answer. Windows uses one 4k window, and one 64MB
      window. And they are no more dynamic than we are (we _could_ try to do it
      dynamically, but let's face it, it's fairly painful to dynamically expand
      PCI bus resources - you may need to reprogram everything up to the root,
      so it would be absolutely crazy to do that unless you have some serious
      masochistic tendencies).
      
      So let's just increase our default value to 64M too.
      
      Cc: Markus Rechberger <mrechberger@gmail.com>
      Cc: Daniel Ritz <daniel.ritz@gmx.ch>
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      fe0e5c4d
    • Andrew Morton's avatar
      [PATCH] relay: remove inlining · 192636ad
      Andrew Morton authored
                text    data     bss     dec     hex filename
      before:   4036      44       0    4080     ff0 kernel/relay.o
      after:    3727      44       0    3771     ebb kernel/relay.o
      
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Tom Zanussi <zanussi@us.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      192636ad
    • Jeremy Fitzhardinge's avatar
      [PATCH] ptrace: Fix EFL_OFFSET value according to i386 pda changes · 8701ea95
      Jeremy Fitzhardinge authored
      The PDA patches introduced a bug in ptrace: it reads eflags from the wrong
      place on the target's stack, but writes it back to the correct place.  The
      result is a corrupted eflags, which is most visible when it turns interrupts
      off unexpectedly.
      
      This patch fixes this by making the ptrace code a little less fragile.  It
      changes [gs]et_stack_long to take a straightforward byte offset into struct
      pt_regs, rather than requiring all callers to do a sizeof(struct pt_regs)
      offset adjustment.  This means that the eflag's offset (EFL_OFFSET) on the
      target stack can be simply computed with offsetof().
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Frederik Deweerdt <deweerdt@free.fr>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8701ea95
    • Yasunori Goto's avatar
      [PATCH] memory hotplug: fix compile error for i386 with NUMA config · 7c7e9425
      Yasunori Goto authored
      Fix compile error when config memory hotplug with numa on i386.
      
      The cause of compile error was missing of arch_add_memory(),
      remove_memory(), and memory_add_physaddr_to_nid().
      Signed-off-by: default avatarYasunori Goto <y-goto@jp.fujitsu.com>
      Acked-by: default avatarDavid Rientjes <rientjes@cs.washington.edu>
      Acked-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7c7e9425
    • Maciej W. Rozycki's avatar
      [PATCH] mips: if_fddi.h: Add a missing inclusion · 080dd51d
      Maciej W. Rozycki authored
      This is a change to include <linux/netdevice.h> in <linux/if_fddi.h> which is
      needed for "struct fddi_statistics".
      Signed-off-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Jeff Garzik <jeff@garzik.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      080dd51d
    • Martin Waitz's avatar
      [PATCH] kernel-doc: remove Martin from MAINTAINERS · 73fa186e
      Martin Waitz authored
      I don't have the time to work on Linux Documentation, so I really should
      document that in MAINTAINERS.  With Randy, kernel-doc is in good hands
      anyway.
      Signed-off-by: default avatarMartin Waitz <tali@admingilde.org>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      73fa186e
    • Randy Dunlap's avatar
      [PATCH] kernel-doc: allow unnamed structs/unions · 134fe01b
      Randy Dunlap authored
      Make kernel-doc support unnamed (anonymous) structs and unions.  There is
      one (union) in include/linux/skbuff.h (inside struct sk_buff) that is
      currently generating a kernel-doc warning, so this fixes that warning.
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      134fe01b
    • Vadim Lobanov's avatar
      [PATCH] fdtable: Provide free_fdtable() wrapper · 01b2d93c
      Vadim Lobanov authored
      Christoph Hellwig has expressed concerns that the recent fdtable changes
      expose the details of the RCU methodology used to release no-longer-used
      fdtable structures to the rest of the kernel.  The trivial patch below
      addresses these concerns by introducing the appropriate free_fdtable()
      calls, which simply wrap the release RCU usage.  Since free_fdtable() is a
      one-liner, it makes sense to promote it to an inline helper.
      Signed-off-by: default avatarVadim Lobanov <vlobanov@speakeasy.net>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      01b2d93c
    • Paul Mackerras's avatar
      [PATCH] gxt4500: Fix colormap and PLL setting, support GXT6000P · 31fccf7f
      Paul Mackerras authored
      This fixes some bugs in the gxt4500 framebuffer driver, and adds support
      for GXT6000P cards.
      
      First, I had the red and blue channels swapped in the colormap update code,
      resulting in penguins' noses and feet turning blue (though the penguins
      weren't actually shivering :).
      
      Secondly, the code that calculated the values to put in the PLL that
      generates the pixel clock wasn't observing some constraints that I wasn't
      originally aware of, but am now that I have some documentation on the chip.
      
      The GXT6000P is essentially identical from software's point of view, except
      for a different reference clock for the PLL, and the addition of a geometry
      engine (which this driver doesn't use).
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Cc: James Simmons <jsimmons@infradead.org>
      Cc: "Antonino A. Daplas" <adaplas@pol.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      31fccf7f
    • Akinobu Mita's avatar
      [PATCH] tlclk: delete unnecessary sysfs_remove_group · 5e40508e
      Akinobu Mita authored
      It is unnecessary and invalid to call sysfs_remove_group() after
      sysfs_create_group() failure.
      
      Cc: Sebastien Bouchard <sebastien.bouchard@ca.kontron.com>
      Cc: Mark Gross <mark.gross@intel.com>
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      5e40508e
    • Ben Dooks's avatar
      [PATCH] MAINTAINERS: fix email for S3C2410 and S3C2440 · 449d4dd5
      Ben Dooks authored
      Change the email address for the S3C2410 and S3C2440 maintainer.  The old
      addresses have been deleted due to spam issues.
      Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      449d4dd5