1. 22 Jun, 2009 2 commits
    • Michael Trimarchi's avatar
      i2c: Fix stuck transaction on cpm-i2c driver · dc1972d0
      Michael Trimarchi authored
      When a process tries to read/write a disconnected i2c device, it receives a signal (e.g. ctrl-c) and the kernel gets stuck.
      
      BUG: soft lockup - CPU#0 stuck for 61s! [I2CEEpromTest:392]
      NIP: c01628f8 LR: c01628f0 CTR: c00177cc
      REGS: c39abd70 TRAP: 0901   Not tainted  (2.6.25.7-alcore)
      MSR: 00009032 <EE,ME,IR,DR>  CR: 42042048  XER: 20000000
      TASK = c3889bd0[392] 'I2CEEpromTest' THREAD: c39aa000
      GPR00: 00009000 c39abe20 c3889bd0 c39075c8 c39abe28 00000001 00000000 00000001
      GPR08: c3889bd0 c39075c8 00009032 c39abe34 00002437
      NIP [c01628f8] cpm_i2c_xfer+0x5fc/0x6d0
      LR [c01628f0] cpm_i2c_xfer+0x5f4/0x6d0
      Call Trace:
      [c39abe20] [c0162924] cpm_i2c_xfer+0x628/0x6d0 (unreliable)
      [c39abe90] [c015f6a0] i2c_transfer+0x88/0xb4
      [c39abeb0] [c0160164] i2c_master_recv+0x48/0x6c
      [c39abed0] [c01618dc] i2cdev_read+0x50/0xe4
      [c39abef0] [c0068b24] vfs_read+0xc4/0x108
      [c39abf10] [c0068f4c] sys_read+0x4c/0x90
      [c39abf40] [c000d348] ret_from_syscall+0x0/0x38
      Instruction dump:
      3bc00064 92610010 3bf201c8 92810014 3b61
      
      This happen because though the wait_event_interruptible_timeout takes the
      signals into account, the driver does not handle them.
      We propose to change the wait_event_interruptible_timeout with
      wait_event_timeout, leaving the signals to be handled in other points
      on the upper layers.
      Signed-off-by: default avatarBruno Morelli <bruno@evidence.eu.com>
      Signed-off-by: default avatarMichael Trimarchi <michael@evidence.eu.com>
      Acked-by: default avatarJochen Friedrich <jochen@scram.de>
      [ben-linux@fluff.org: fix title for patch]
      Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
      dc1972d0
    • Tony Lindgren's avatar
      i2c-omap: Fix build breaking typo cpu_is_omap_2430 · ff0f2426
      Tony Lindgren authored
      Hi Ben,
      
      Can you please queue this fix?
      
      Thanks,
      
      Tony
      
      >From ffe2b2cdf6283770b70a197e3748c6b40a1006be Mon Sep 17 00:00:00 2001
      From: Tony Lindgren <tony@atomide.com>
      Date: Wed, 17 Jun 2009 13:14:23 +0300
      Subject: [PATCH] i2c-omap: Fix build breaking typo in cpu_is_omap_2430
      
      Commit 84bf2c86 introduced a typo, it should be cpu_is_omap2430
      instead. The typo was probably caused by a mismerge.
      
      Without this patch all omaps fail to build with:
      error: implicit declaration of function 'cpu_is_omap_2430'
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
      ff0f2426
  2. 21 Jun, 2009 22 commits
  3. 20 Jun, 2009 16 commits
    • Johannes Weiner's avatar
      mm: page_alloc: clear PG_locked before checking flags on free · c277331d
      Johannes Weiner authored
      da456f14 "page allocator: do not disable interrupts in free_page_mlock()" moved
      the PG_mlocked clearing after the flag sanity checking which makes mlocked
      pages always trigger 'bad page'.  Fix this by clearing the bit up front.
      Reported--and-debugged-by: default avatarPeter Chubb <peter.chubb@nicta.com.au>
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarMel Gorman <mel@csn.ul.ie>
      Tested-by: default avatarMaxim Levitsky <maximlevitsky@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c277331d
    • Linus Torvalds's avatar
      x86, 64-bit: Clean up user address masking · 9063c61f
      Linus Torvalds authored
      The discussion about using "access_ok()" in get_user_pages_fast() (see
      commit 7f818906: "x86: don't use
      'access_ok()' as a range check in get_user_pages_fast()" for details and
      end result), made us notice that x86-64 was really being very sloppy
      about virtual address checking.
      
      So be way more careful and straightforward about masking x86-64 virtual
      addresses:
      
       - All the VIRTUAL_MASK* variants now cover half of the address
         space, it's not like we can use the full mask on a signed
         integer, and the larger mask just invites mistakes when
         applying it to either half of the 48-bit address space.
      
       - /proc/kcore's kc_offset_to_vaddr() becomes a lot more
         obvious when it transforms a file offset into a
         (kernel-half) virtual address.
      
       - Unify/simplify the 32-bit and 64-bit USER_DS definition to
         be based on TASK_SIZE_MAX.
      
      This cleanup and more careful/obvious user virtual address checking also
      uncovered a buglet in the x86-64 implementation of strnlen_user(): it
      would do an "access_ok()" check on the whole potential area, even if the
      string itself was much shorter, and thus return an error even for valid
      strings. Our sloppy checking had hidden this.
      
      So this fixes 'strnlen_user()' to do this properly, the same way we
      already handled user strings in 'strncpy_from_user()'.  Namely by just
      checking the first byte, and then relying on fault handling for the
      rest.  That always works, since we impose a guard page that cannot be
      mapped at the end of the user space address space (and even if we
      didn't, we'd have the address space hole).
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Nick Piggin <npiggin@suse.de>
      Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9063c61f
    • Linus Torvalds's avatar
      Merge branch 'irq-fixes-for-linus' of... · 2453d6ff
      Linus Torvalds authored
      Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        genirq, irq.h: Fix kernel-doc warnings
        genirq: fix comment to say IRQ_WAKE_THREAD
      2453d6ff
    • Linus Torvalds's avatar
      Merge branch 'perfcounters-fixes-for-linus' of... · 12e24f34
      Linus Torvalds authored
      Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (49 commits)
        perfcounter: Handle some IO return values
        perf_counter: Push perf_sample_data through the swcounter code
        perf_counter tools: Define and use our own u64, s64 etc. definitions
        perf_counter: Close race in perf_lock_task_context()
        perf_counter, x86: Improve interactions with fast-gup
        perf_counter: Simplify and fix task migration counting
        perf_counter tools: Add a data file header
        perf_counter: Update userspace callchain sampling uses
        perf_counter: Make callchain samples extensible
        perf report: Filter to parent set by default
        perf_counter tools: Handle lost events
        perf_counter: Add event overlow handling
        fs: Provide empty .set_page_dirty() aop for anon inodes
        perf_counter: tools: Makefile tweaks for 64-bit powerpc
        perf_counter: powerpc: Add processor back-end for MPC7450 family
        perf_counter: powerpc: Make powerpc perf_counter code safe for 32-bit kernels
        perf_counter: powerpc: Change how processor-specific back-ends get selected
        perf_counter: powerpc: Use unsigned long for register and constraint values
        perf_counter: powerpc: Enable use of software counters on 32-bit powerpc
        perf_counter tools: Add and use isprint()
        ...
      12e24f34
    • Linus Torvalds's avatar
      Merge branch 'sched-fixes-for-linus' of... · 1eb51c33
      Linus Torvalds authored
      Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        sched: Fix out of scope variable access in sched_slice()
        sched: Hide runqueues from direct refer at source code level
        sched: Remove unneeded __ref tag
        sched, x86: Fix cpufreq + sched_clock() TSC scaling
      1eb51c33
    • Linus Torvalds's avatar
      Merge branch 'tracing-fixes-for-linus' of... · b0b7065b
      Linus Torvalds authored
      Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (24 commits)
        tracing/urgent: warn in case of ftrace_start_up inbalance
        tracing/urgent: fix unbalanced ftrace_start_up
        function-graph: add stack frame test
        function-graph: disable when both x86_32 and optimize for size are configured
        ring-buffer: have benchmark test print to trace buffer
        ring-buffer: do not grab locks in nmi
        ring-buffer: add locks around rb_per_cpu_empty
        ring-buffer: check for less than two in size allocation
        ring-buffer: remove useless compile check for buffer_page size
        ring-buffer: remove useless warn on check
        ring-buffer: use BUF_PAGE_HDR_SIZE in calculating index
        tracing: update sample event documentation
        tracing/filters: fix race between filter setting and module unload
        tracing/filters: free filter_string in destroy_preds()
        ring-buffer: use commit counters for commit pointer accounting
        ring-buffer: remove unused variable
        ring-buffer: have benchmark test handle discarded events
        ring-buffer: prevent adding write in discarded area
        tracing/filters: strloc should be unsigned short
        tracing/filters: operand can be negative
        ...
      
      Fix up kmemcheck-induced conflict in kernel/trace/ring_buffer.c manually
      b0b7065b
    • Linus Torvalds's avatar
      Merge branch 'timers-fixes-for-linus' of... · 38df92b8
      Linus Torvalds authored
      Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        NOHZ: Properly feed cpufreq ondemand governor
      38df92b8
    • Linus Torvalds's avatar
      Merge branch 'x86-fixes-for-linus' of... · c4c5ab30
      Linus Torvalds authored
      Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (45 commits)
        x86, mce: fix error path in mce_create_device()
        x86: use zalloc_cpumask_var for mce_dev_initialized
        x86: fix duplicated sysfs attribute
        x86: de-assembler-ize asm/desc.h
        i386: fix/simplify espfix stack switching, move it into assembly
        i386: fix return to 16-bit stack from NMI handler
        x86, ioapic: Don't call disconnect_bsp_APIC if no APIC present
        x86: Remove duplicated #include's
        x86: msr.h linux/types.h is only required for __KERNEL__
        x86: nmi: Add Intel processor 0x6f4 to NMI perfctr1 workaround
        x86, mce: mce_intel.c needs <asm/apic.h>
        x86: apic/io_apic.c: dmar_msi_type should be static
        x86, io_apic.c: Work around compiler warning
        x86: mce: Don't touch THERMAL_APIC_VECTOR if no active APIC present
        x86: mce: Handle banks == 0 case in K7 quirk
        x86, boot: use .code16gcc instead of .code16
        x86: correct the conversion of EFI memory types
        x86: cap iomem_resource to addressable physical memory
        x86, mce: rename _64.c files which are no longer 64-bit-specific
        x86, mce: mce.h cleanup
        ...
      
      Manually fix up trivial conflict in arch/x86/mm/fault.c
      c4c5ab30
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze · 7fd5b632
      Linus Torvalds authored
      * 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Add missing symbols for CONSTRUCTORS support
        microblaze: remove init_mm
      7fd5b632
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes · ad5cf46b
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes:
        kernel-doc: fix param matching for array params
        kernel-doc: ignore kmemcheck_bitfield_begin/end
        kallsyms: fix inverted valid symbol checking
        kbuild: fix build error during make htmldocs
      ad5cf46b
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 93db6294
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (35 commits)
        Input: add driver for Synaptics I2C touchpad
        Input: synaptics - add support for reporting x/y resolution
        Input: ALPS - handle touchpoints buttons correctly
        Input: gpio-keys - change timer to workqueue
        Input: ads7846 - pin change interrupt support
        Input: add support for touchscreen on W90P910 ARM platform
        Input: appletouch - improve finger detection
        Input: wacom - clear Intuos4 wheel data when finger leaves proximity
        Input: ucb1400 - move static function from header into core
        Input: add driver for EETI touchpanels
        Input: ads7846 - more detailed model name in sysfs
        Input: ads7846 - support swapping x and y axes
        Input: ati_remote2 - use non-atomic bitops
        Input: introduce lm8323 keypad driver
        Input: psmouse - ESD workaround fix for OLPC XO touchpad
        Input: tsc2007 - make sure platform provides get_pendown_state()
        Input: uinput - flush all pending ff effects before destroying device
        Input: simplify name handling for certain input handles
        Input: serio - do not use deprecated dev.power.power_state
        Input: wacom - add support for Intuos4 tablets
        ...
      93db6294
    • Linus Torvalds's avatar
      Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 · 43813f39
      Linus Torvalds authored
      * 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (24 commits)
        agp/intel: Make intel_i965_mask_memory use dma_addr_t for physical addresses
        agp: add user mapping support to ATI AGP bridge.
        drm/i915: enable GEM on PAE.
        drm/radeon: fix unused variables warning
        agp: switch AGP to use page array instead of unsigned long array
        agpgart: detected ALi M???? chipset with M1621
        drm/radeon: command stream checker for r3xx-r5xx hardware
        drm/radeon: Fully initialize LVDS info also when we can't get it from the ROM.
        radeon: Fix CP byte order on big endian architectures with KMS.
        agp/uninorth: Handle user memory types.
        drm/ttm: Add some powerpc cache flush code.
        radeon: Enable modesetting on non-x86.
        drm/radeon: Respect AGP cant_use_aperture flag.
        drm: EDID endianness fixes.
        drm/radeon: this VRAM vs aperture test is wrong, just remove it.
        drm/ttm: fix an error path to exit function correctly
        drm: Apply "Memory fragmentation from lost alignment blocks"
        ttm: Return -ERESTART when a signal interrupts bo eviction.
        drm: Remove memory debugging infrastructure.
        drm/i915: Clear fence register on tiling stride change.
        ...
      43813f39
    • Linus Torvalds's avatar
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 · e6423407
      Linus Torvalds authored
      * 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (34 commits)
        ide-cd: prevent null pointer deref via cdrom_newpc_intr
        ide: BUG() on unknown requests
        ide: filter out invalid DMA xfer mode changes in HDIO_DRIVE_CMD ioctl handler
        ide: do not access ide_drive_t 'drive_data' field directly
        sl82c105: implement test_irq() method
        siimage: implement test_irq() method
        pdc202xx_old: implement test_irq() method (take 2)
        cmd64x: implement test_irq() method
        cmd640: implement test_irq() method
        ide: move ack_intr() method into 'struct ide_port_ops' (take 2)
        ide: move IRQ clearing from ack_intr() method to clear_irq() method (take 2)
        siimage: use ide_dma_test_irq() (take 2)
        cmd64x: implement clear_irq() method (take 2)
        ide: call clear_irq() method in ide_timer_expiry()
        sgiioc4: coding style cleanup
        ide: don't enable IORDY at a probe time
        ide: IORDY handling fixes
        ata: add ata_id_pio_need_iordy() helper (v2)
        ide-tape: fix build issue
        ide: unify interrupt reason checking
        ...
      e6423407
    • Linus Torvalds's avatar
      x86: don't use 'access_ok()' as a range check in get_user_pages_fast() · 7f818906
      Linus Torvalds authored
      It's really not right to use 'access_ok()', since that is meant for the
      normal "get_user()" and "copy_from/to_user()" accesses, which are done
      through the TLB, rather than through the page tables.
      
      Why? access_ok() does both too few, and too many checks.  Too many,
      because it is meant for regular kernel accesses that will not honor the
      'user' bit in the page tables, and because it honors the USER_DS vs
      KERNEL_DS distinction that we shouldn't care about in GUP.  And too few,
      because it doesn't do the 'canonical' check on the address on x86-64,
      since the TLB will do that for us.
      
      So instead of using a function that isn't meant for this, and does
      something else and much more complicated, just do the real rules: we
      don't want the range to overflow, and on x86-64, we want it to be a
      canonical low address (on 32-bit, all addresses are canonical).
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7f818906
    • Ingo Molnar's avatar
      Merge branch 'tip/tracing/urgent-1' of... · d4c40383
      Ingo Molnar authored
      Merge branch 'tip/tracing/urgent-1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent
      d4c40383