Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tag: v2.6.33-rc4-gi…
Commits on Jan 16, 2010
  1. @torvalds

    Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/ke…

    torvalds authored
    …rnel/git/jdelvare/staging
    
    * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
      i2c: Do not use device name after device_unregister
      i2c/pca: Don't use *_interruptible
      i2c-ali1563: Remove sparse warnings
      i2c: Test off by one in {piix4,vt596}_transaction()
      i2c-core: Storage class should be before const qualifier
  2. @torvalds

    Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/li…

    torvalds authored
    …nux/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:
      x86, uv: Ensure hub revision set for all ACPI modes.
      x86, uv: Add function retrieving node controller revision number
      x86: xen: 64-bit kernel RPL should be 0
      x86: kernel_thread() -- initialize SS to a known state
      x86/agp: Fix agp_amd64_init and agp_amd64_cleanup
      x86: SGI UV: Fix mapping of MMIO registers
      x86: mce.h: Fix warning in header checks
  3. @torvalds

    Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/l…

    torvalds authored
    …inux/kernel/git/tip/linux-2.6-tip
    
    * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
      futexes: Remove rw parameter from get_futex_key()
  4. @torvalds

    Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/l…

    torvalds authored
    …inux/kernel/git/tip/linux-2.6-tip
    
    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
      perf tools: Check if /dev/null can be used as the -o gcc argument
      perf tools: Move QUIET_STDERR def to before first use
      perf: Stop stack frame walking off kernel addresses boundaries
  5. @torvalds

    Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/sc…

    torvalds authored
    …m/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:
      tracing/filters: Add comment for match callbacks
      tracing/filters: Fix MATCH_FULL filter matching for PTR_STRING
      tracing/filters: Fix MATCH_MIDDLE_ONLY filter matching
      lib: Introduce strnstr()
      tracing/filters: Fix MATCH_END_ONLY filter matching
      tracing/filters: Fix MATCH_FRONT_ONLY filter matching
      ftrace: Fix MATCH_END_ONLY function filter
      tracing/x86: Derive arch from bits argument in recordmcount.pl
      ring-buffer: Add rb_list_head() wrapper around new reader page next field
      ring-buffer: Wrap a list.next reference with rb_list_head()
  6. @broonie @torvalds

    revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC Fra…

    broonie authored torvalds committed
    …mebuffer"
    
    Fix divide by zero and broken output.  Commit 600ce1a ("fix clock
    setting for Samsung SoC Framebuffer") introduced a mandatory refresh
    parameter to the platform data for the S3C framebuffer but did not
    introduce any validation code, causing existing platforms (none of which
    have refresh set) to divide by zero whenever the framebuffer is
    configured, generating warnings and unusable output.
    
    Ben Dooks noted several problems with the patch:
    
     - The platform data supplies the pixclk directly and should already
       have taken care of the refresh rate.
     - The addition of a window ID parameter doesn't help since only the
       root framebuffer can control the pixclk.
     - pixclk is specified in picoseconds (rather than Hz) as the patch
       assumed.
    
    and suggests reverting the commit so do that.  Without fixing this no
    mainline user of the driver will produce output.
    
    [akpm@linux-foundation.org: don't revert the correct bit]
    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Cc: InKi Dae <inki.dae@samsung.com>
    Cc: Kyungmin Park <kmpark@infradead.org>
    Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Ben Dooks <ben-linux@fluff.org>
    Cc: <stable@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  7. @torvalds

    nommu: fix shared mmap after truncate shrinkage problems

    David Howells authored torvalds committed
    Fix a problem in NOMMU mmap with ramfs whereby a shared mmap can happen
    over the end of a truncation.  The problem is that
    ramfs_nommu_check_mappings() checks that the reduced file size against the
    VMA tree, but not the vm_region tree.
    
    The following sequence of events can cause the problem:
    
    	fd = open("/tmp/x", O_RDWR|O_TRUNC|O_CREAT, 0600);
    	ftruncate(fd, 32 * 1024);
    	a = mmap(NULL, 32 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    	b = mmap(NULL, 16 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    	munmap(a, 32 * 1024);
    	ftruncate(fd, 16 * 1024);
    	c = mmap(NULL, 32 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    
    Mapping 'a' creates a vm_region covering 32KB of the file.  Mapping 'b'
    sees that the vm_region from 'a' is covering the region it wants and so
    shares it, pinning it in memory.
    
    Mapping 'a' then goes away and the file is truncated to the end of VMA
    'b'.  However, the region allocated by 'a' is still in effect, and has
    _not_ been reduced.
    
    Mapping 'c' is then created, and because there's a vm_region covering the
    desired region, get_unmapped_area() is _not_ called to repeat the check,
    and the mapping is granted, even though the pages from the latter half of
    the mapping have been discarded.
    
    However:
    
    	d = mmap(NULL, 16 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    
    Mapping 'd' should work, and should end up sharing the region allocated by
    'a'.
    
    To deal with this, we shrink the vm_region struct during the truncation,
    lest do_mmap_pgoff() take it as licence to share the full region
    automatically without calling the get_unmapped_area() file op again.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Ungerer <gerg@snapgear.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  8. @torvalds

    nommu: fix race between ramfs truncation and shared mmap

    David Howells authored torvalds committed
    Fix the race between the truncation of a ramfs file and an attempt to make
    a shared mmap of region of that file.
    
    The problem is that do_mmap_pgoff() calls f_op->get_unmapped_area() to
    verify that the file region is made of contiguous pages and to find its
    base address - but there isn't any locking to guarantee this region until
    vma_prio_tree_insert() is called by add_vma_to_mm().
    
    Note that moving the functionality into f_op->mmap() doesn't help as that
    is also called before vma_prio_tree_insert().
    
    Instead make ramfs_nommu_check_mappings() grab nommu_region_sem whilst it
    does its checks.  This means that this function will wait whilst mmaps
    take place.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Ungerer <gerg@snapgear.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  9. @torvalds

    nommu: don't need get_unmapped_area() for NOMMU

    David Howells authored torvalds committed
    get_unmapped_area() is unnecessary for NOMMU as no-one calls it.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Ungerer <gerg@snapgear.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  10. @torvalds

    nommu: remove a superfluous check of vm_region::vm_usage

    David Howells authored torvalds committed
    In split_vma(), there's no need to check if the VMA being split has a
    region that's in use by more than one VMA because:
    
     (1) The preceding test prohibits splitting of non-anonymous VMAs and regions
         (eg: file or chardev backed VMAs).
    
     (2) Anonymous regions can't be mapped multiple times because there's no handle
         by which to refer to the already existing region.
    
     (3) If a VMA has previously been split, then the region backing it has also
         been split into two regions, each of usage 1.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Ungerer <gerg@snapgear.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  11. @torvalds

    nommu: struct vm_region's vm_usage count need not be atomic

    David Howells authored torvalds committed
    The vm_usage count field in struct vm_region does not need to be atomic as
    it's only even modified whilst nommu_region_sem is write locked.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Ungerer <gerg@snapgear.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  12. @torvalds

    nommu: fix SYSV SHM for NOMMU

    David Howells authored torvalds committed
    Commit c4caa77 ("file
    ->get_unmapped_area() shouldn't duplicate work of get_unmapped_area()")
    broke SYSV SHM for NOMMU by taking away the pointer to
    shm_get_unmapped_area() from shm_file_operations.
    
    Put it back conditionally on CONFIG_MMU=n.
    
    file->f_ops->get_unmapped_area() is used to find out the base address for a
    mapping of a mappable chardev device or mappable memory-based file (such as a
    ramfs file).  It needs to be called prior to file->f_ops->mmap() being called.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Ungerer <gerg@snapgear.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  13. @fengguang @torvalds

    sysdev: fix prototype for memory_sysdev_class show/store functions

    fengguang authored torvalds committed
    The function prototype mismatches in call stack:
    
                    [<ffffffff81494268>] print_block_size+0x58/0x60
                    [<ffffffff81487e3f>] sysdev_class_show+0x1f/0x30
                    [<ffffffff811d629b>] sysfs_read_file+0xcb/0x1f0
                    [<ffffffff81176328>] vfs_read+0xc8/0x180
    
    Due to prototype mismatch, print_block_size() will sprintf() into
    *attribute instead of *buf, hence user space will read the initial
    zeros from *buf:
    	$ hexdump /sys/devices/system/memory/block_size_bytes
    	0000000 0000 0000 0000 0000
    	0000008
    
    After patch:
    	cat /sys/devices/system/memory/block_size_bytes
    	0x8000000
    
    This complements commits c29af96 and 4a0b2b4.
    
    Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Greg Kroah-Hartman <gregkh@suse.de>
    Cc: "Zheng, Shaohui" <shaohui.zheng@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  14. @fengguang @torvalds

    memory-hotplug: add 0x prefix to HEX block_size_bytes

    fengguang authored torvalds committed
    Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  15. @torvalds

    memcg: ensure list is empty at rmdir

    Daisuke Nishimura authored torvalds committed
    Current mem_cgroup_force_empty() only ensures mem->res.usage == 0 on
    success.  But this doesn't guarantee memcg's LRU is really empty, because
    there are some cases in which !PageCgrupUsed pages exist on memcg's LRU.
    
    For example:
    - Pages can be uncharged by its owner process while they are on LRU.
    - race between mem_cgroup_add_lru_list() and __mem_cgroup_uncharge_common().
    
    So there can be a case in which the usage is zero but some of the LRUs are not empty.
    
    OTOH, mem_cgroup_del_lru_list(), which can be called asynchronously with
    rmdir, accesses the mem_cgroup, so this access can cause a problem if it
    races with rmdir because the mem_cgroup might have been freed by rmdir.
    
    Actually, I saw a bug which seems to be caused by this race.
    
    	[1530745.949906] BUG: unable to handle kernel NULL pointer dereference at 0000000000000230
    	[1530745.950651] IP: [<ffffffff810fbc11>] mem_cgroup_del_lru_list+0x30/0x80
    	[1530745.950651] PGD 3863de067 PUD 3862c7067 PMD 0
    	[1530745.950651] Oops: 0002 [#1] SMP
    	[1530745.950651] last sysfs file: /sys/devices/system/cpu/cpu7/cache/index1/shared_cpu_map
    	[1530745.950651] CPU 3
    	[1530745.950651] Modules linked in: configs ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp nfsd nfs_acl auth_rpcgss exportfs autofs4 hidp rfcomm l2cap crc16 bluetooth lockd sunrpc ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp bnx2i cnic uio ipv6 cxgb3i cxgb3 mdio libiscsi_tcp libiscsi scsi_transport_iscsi dm_mirror dm_multipath scsi_dh video output sbs sbshc battery ac lp kvm_intel kvm sg ide_cd_mod cdrom serio_raw tpm_tis tpm tpm_bios acpi_memhotplug button parport_pc parport rtc_cmos rtc_core rtc_lib e1000 i2c_i801 i2c_core pcspkr dm_region_hash dm_log dm_mod ata_piix libata shpchp megaraid_mbox sd_mod scsi_mod megaraid_mm ext3 jbd uhci_hcd ohci_hcd ehci_hcd [last unloaded: freq_table]
    	[1530745.950651] Pid: 19653, comm: shmem_test_02 Tainted: G   M       2.6.32-mm1-00701-g2b04386 #3 Express5800/140Rd-4 [N8100-1065]
    	[1530745.950651] RIP: 0010:[<ffffffff810fbc11>]  [<ffffffff810fbc11>] mem_cgroup_del_lru_list+0x30/0x80
    	[1530745.950651] RSP: 0018:ffff8803863ddcb8  EFLAGS: 00010002
    	[1530745.950651] RAX: 00000000000001e0 RBX: ffff8803abc02238 RCX: 00000000000001e0
    	[1530745.950651] RDX: 0000000000000000 RSI: ffff88038611a000 RDI: ffff8803abc02238
    	[1530745.950651] RBP: ffff8803863ddcc8 R08: 0000000000000002 R09: ffff8803a04c8643
    	[1530745.950651] R10: 0000000000000000 R11: ffffffff810c7333 R12: 0000000000000000
    	[1530745.950651] R13: ffff880000017f00 R14: 0000000000000092 R15: ffff8800179d0310
    	[1530745.950651] FS:  0000000000000000(0000) GS:ffff880017800000(0000) knlGS:0000000000000000
    	[1530745.950651] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    	[1530745.950651] CR2: 0000000000000230 CR3: 0000000379d87000 CR4: 00000000000006e0
    	[1530745.950651] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    	[1530745.950651] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    	[1530745.950651] Process shmem_test_02 (pid: 19653, threadinfo ffff8803863dc000, task ffff88038612a8a0)
    	[1530745.950651] Stack:
    	[1530745.950651]  ffffea00040c2fe8 0000000000000000 ffff8803863ddd98 ffffffff810c739a
    	[1530745.950651] <0> 00000000863ddd18 000000000000000c 0000000000000000 0000000000000000
    	[1530745.950651] <0> 0000000000000002 0000000000000000 ffff8803863ddd68 0000000000000046
    	[1530745.950651] Call Trace:
    	[1530745.950651]  [<ffffffff810c739a>] release_pages+0x142/0x1e7
    	[1530745.950651]  [<ffffffff810c778f>] ? pagevec_move_tail+0x6e/0x112
    	[1530745.950651]  [<ffffffff810c781e>] pagevec_move_tail+0xfd/0x112
    	[1530745.950651]  [<ffffffff810c78a9>] lru_add_drain+0x76/0x94
    	[1530745.950651]  [<ffffffff810dba0c>] exit_mmap+0x6e/0x145
    	[1530745.950651]  [<ffffffff8103f52d>] mmput+0x5e/0xcf
    	[1530745.950651]  [<ffffffff81043ea8>] exit_mm+0x11c/0x129
    	[1530745.950651]  [<ffffffff8108fb29>] ? audit_free+0x196/0x1c9
    	[1530745.950651]  [<ffffffff81045353>] do_exit+0x1f5/0x6b7
    	[1530745.950651]  [<ffffffff8106133f>] ? up_read+0x2b/0x2f
    	[1530745.950651]  [<ffffffff8137d187>] ? lockdep_sys_exit_thunk+0x35/0x67
    	[1530745.950651]  [<ffffffff81045898>] do_group_exit+0x83/0xb0
    	[1530745.950651]  [<ffffffff810458dc>] sys_exit_group+0x17/0x1b
    	[1530745.950651]  [<ffffffff81002c1b>] system_call_fastpath+0x16/0x1b
    	[1530745.950651] Code: 54 53 0f 1f 44 00 00 83 3d cc 29 7c 00 00 41 89 f4 75 63 eb 4e 48 83 7b 08 00 75 04 0f 0b eb fe 48 89 df e8 18 f3 ff ff 44 89 e2 <48> ff 4c d0 50 48 8b 05 2b 2d 7c 00 48 39 43 08 74 39 48 8b 4b
    	[1530745.950651] RIP  [<ffffffff810fbc11>] mem_cgroup_del_lru_list+0x30/0x80
    	[1530745.950651]  RSP <ffff8803863ddcb8>
    	[1530745.950651] CR2: 0000000000000230
    	[1530745.950651] ---[ end trace c3419c1bb8acc34f ]---
    	[1530745.950651] Fixing recursive fault but reboot is needed!
    
    The problem here is pages on LRU may contain pointer to stale memcg.  To
    make res->usage to be 0, all pages on memcg must be uncharged or moved to
    another(parent) memcg.  Moved page_cgroup have already removed from
    original LRU, but uncharged page_cgroup contains pointer to memcg withou
    PCG_USED bit.  (This asynchronous LRU work is for improving performance.)
    If PCG_USED bit is not set, page_cgroup will never be added to memcg's
    LRU.  So, about pages not on LRU, they never access stale pointer.  Then,
    what we have to take care of is page_cgroup _on_ LRU list.  This patch
    fixes this problem by making mem_cgroup_force_empty() visit all LRUs
    before exiting its loop and guarantee there are no pages on its LRU.
    
    Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Balbir Singh <balbir@linux.vnet.ibm.com>
    Cc: <stable@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  16. @jeffmahoney @torvalds

    virtio: fix section mismatch warnings

    jeffmahoney authored torvalds committed
    Fix fixes the following warnings by renaming the driver structures to be
    suffixed with _driver.
    
    WARNING: drivers/virtio/virtio_balloon.o(.data+0x88): Section mismatch in reference from the variable virtio_balloon to the function .devexit.text:virtballoon_remove()
    
    WARNING: drivers/char/hw_random/virtio-rng.o(.data+0x88): Section mismatch in reference from the variable virtio_rng to the function .devexit.text:virtrng_remove()
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Acked-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  17. @kosaki @torvalds

    vmscan: kswapd: don't retry balance_pgdat() if all zones are unreclai…

    kosaki authored torvalds committed
    …mable
    
    Commit f50de2d (vmscan: have kswapd sleep for a short interval and double
    check it should be asleep) can cause kswapd to enter an infinite loop if
    running on a single-CPU system.  If all zones are unreclaimble,
    sleeping_prematurely return 1 and kswapd will call balance_pgdat() again.
    but it's totally meaningless, balance_pgdat() doesn't anything against
    unreclaimable zone!
    
    Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Reported-by: Will Newton <will.newton@gmail.com>
    Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
    Reviewed-by: Rik van Riel <riel@redhat.com>
    Tested-by: Will Newton <will.newton@gmail.com>
    Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  18. @torvalds

    smp_call_function_any(): pass the node value to cpumask_of_node()

    David John authored torvalds committed
    The change in acpi_cpufreq to use smp_call_function_any causes a warning
    when it is called since the function erroneously passes the cpu id to
    cpumask_of_node rather than the node that the cpu is on.  Fix this.
    
    cpumask_of_node(3): node > nr_node_ids(1)
    Pid: 1, comm: swapper Not tainted 2.6.33-rc3-00097-g2c1f189 #223
    Call Trace:
     [<ffffffff81028bb3>] cpumask_of_node+0x23/0x58
     [<ffffffff81061f51>] smp_call_function_any+0x65/0xfa
     [<ffffffff810160d1>] ? do_drv_read+0x0/0x2f
     [<ffffffff81015fba>] get_cur_val+0xb0/0x102
     [<ffffffff81016080>] get_cur_freq_on_cpu+0x74/0xc5
     [<ffffffff810168a7>] acpi_cpufreq_cpu_init+0x417/0x515
     [<ffffffff81562ce9>] ? __down_write+0xb/0xd
     [<ffffffff8148055e>] cpufreq_add_dev+0x278/0x922
    
    Signed-off-by: David John <davidjon@xenontk.org>
    Cc: Suresh Siddha <suresh.b.siddha@intel.com>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  19. @torvalds

    kernel.h: add BUILD_BUG_ON_NOT_POWER_OF_2()

    Roland Dreier authored torvalds committed
    Add BUILD_BUG_ON_NOT_POWER_OF_2()
    
    When code relies on a constant being a power of 2:
    
    	#define FOO	512	/* must be a power of 2 */
    
    it would be nice to be able to do:
    
    	BUILD_BUG_ON(!is_power_of_2(FOO));
    
    However applying an inline function does not result in a compile-time
    constant that can be used with BUILD_BUG_ON(), so trying that gives
    results in:
    
    	error: bit-field '<anonymous>' width not an integer constant
    
    As suggested by akpm, rather than monkeying around with is_power_of_2()
    and risking gcc warts about constant expressions, just create a macro
    BUILD_BUG_ON_NOT_POWER_OF_2() to encapsulate this common requirement.
    
    Signed-off-by: Roland Dreier <rolandd@cisco.com>
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: David Dillow <dave@thedillows.org>
    Cc: "Robert P. J. Day" <rpjday@crashcourse.ca>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  20. @torvalds

    mm/page_alloc: fix the range check for backward merging

    Kazuhisa Ichikawa authored torvalds committed
    The current check for 'backward merging' within add_active_range() does
    not seem correct.  start_pfn must be compared against
    early_node_map[i].start_pfn (and NOT against .end_pfn) to find out whether
    the new region is backward-mergeable with the existing range.
    
    Signed-off-by: Kazuhisa Ichikawa <ki@epsilou.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  21. @torvalds

    kfifo: document everywhere that size has to be power of two

    Andi Kleen authored torvalds committed
    On my first try using them I missed that the fifos need to be power of
    two, resulting in a runtime bug.  Document that requirement everywhere
    (and fix one grammar bug)
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Acked-by: Stefani Seibold <stefani@seibold.net>
    Cc: Roland Dreier <rdreier@cisco.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Andy Walls <awalls@radix.net>
    Cc: Vikram Dhillon <dhillonv10@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  22. @torvalds

    kfifo: add kfifo_initialized

    Andi Kleen authored torvalds committed
    Simple inline that checks if kfifo_init() has been executed on a fifo.
    
    This is useful for walking all per CPU fifos, when some of them might not
    have been brought up yet.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Acked-by: Stefani Seibold <stefani@seibold.net>
    Cc: Roland Dreier <rdreier@cisco.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Andy Walls <awalls@radix.net>
    Cc: Vikram Dhillon <dhillonv10@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  23. @torvalds

    kfifo: add kfifo_out_peek

    Andi Kleen authored torvalds committed
    In some upcoming code it's useful to peek into a FIFO without permanentely
    removing data.  This patch implements a new kfifo_out_peek() to do this.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Acked-by: Stefani Seibold <stefani@seibold.net>
    Cc: Roland Dreier <rdreier@cisco.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Andy Walls <awalls@radix.net>
    Cc: Vikram Dhillon <dhillonv10@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  24. @torvalds

    kfifo: sanitize *_user error handling

    Andi Kleen authored torvalds committed
    Right now for kfifo_*_user it's not easily possible to distingush between
    a user copy failing and the FIFO not containing enough data.  The problem
    is that both conditions are multiplexed into the same return code.
    
    Avoid this by moving the "copy length" into a separate output parameter
    and only return 0/-EFAULT in the main return value.
    
    I didn't fully adapt the weird "record" variants, those seem
    to be unused anyways and were rather messy (should they be just removed?)
    
    I would appreciate some double checking if I did all the conversions
    correctly.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Cc: Stefani Seibold <stefani@seibold.net>
    Cc: Roland Dreier <rdreier@cisco.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Andy Walls <awalls@radix.net>
    Cc: Vikram Dhillon <dhillonv10@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  25. @torvalds

    kfifo: use void * pointers for user buffers

    Andi Kleen authored torvalds committed
    The pointers to user buffers are currently unsigned char *, which requires
    a lot of casting in the caller for any non-char typed buffers.  Use void *
    instead.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Acked-by: Stefani Seibold <stefani@seibold.net>
    Cc: Roland Dreier <rdreier@cisco.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Andy Walls <awalls@radix.net>
    Cc: Vikram Dhillon <dhillonv10@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  26. @torvalds

    tty.h: make tty_port_get() static inline

    Randy Dunlap authored torvalds committed
    I get a few dozen of these warnings when using
      gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2):
    
    In file included from mmotm-2010-0113-1217/init/do_mounts.c:5:
    mmotm-2010-0113-1217/include/linux/tty.h: In function 'tty_port_get':
    mmotm-2010-0113-1217/include/linux/tty.h:469: warning: '______f' is static but declared in inline function 'tty_port_get' which is not static
    
    so make the function static inline.
    
    [akpm@linux-foundation.org: may as well convert tty_port_users() also]
    Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  27. @torvalds

    edac: i5000_edac critical fix panic out of bounds

    Tamas Vincze authored torvalds committed
    EDAC MC0: INTERNAL ERROR: channel-b out of range (4 >= 4)
    Kernel panic - not syncing: EDAC MC0: Uncorrected Error  (XEN) Domain 0 crashed: 'noreboot' set - not rebooting.
    
    This happens because FERR_NF_FBD bit 28 is not updated on i5000.  Due to
    that, both bits 28 and 29 may be equal to one, returning channel = 3.  As
    this value is invalid, EDAC core generates the panic.
    
    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=14568
    
    Signed-off-by: Tamas Vincze <tom@vincze.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
    Signed-off-by: Doug Thompson <dougthompson@xmission.com>
    Cc: <stable@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  28. @torvalds

    m68knommu: fix invalid flags on coldfire pit clocksource

    john stultz authored torvalds committed
    The m68knommu coldfire pit clocksource looks like it was incorrectly
    marked as a continuous clocksource.  Running with it marked as a
    continuous clocksource could cause hangs when the system switches to
    highres mode or enables nohz.
    
    This patch removes the CLOCK_SOURCE_IS_CONTINUOUS flag on the coldfire pit
    clocksource.  This will disallow systems using this clocksource from
    entering oneshot mode (disabling highres timers and nohz).
    
    Signed-off-by: John Stultz <johnstul@us.ibm.com>
    Acked-by: Greg Ungerer <gerg@snapgear.com>
    Cc: Steven King <sfking@fdwdc.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  29. @Pinglinux @torvalds

    serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device

    Pinglinux authored torvalds committed
    This is a new two finger touch Fujitsu Wacom Tablet PC.
    
    Signed-off-by: Ping Cheng <pingc@wacom.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: Dmitry Torokhov <dtor@mail.ru>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  30. @teawater @torvalds

    markup_oops.pl: fix error with x86

    teawater authored torvalds committed
    When I try to use markup_oops.pl in x86, I always get:
    
    cat 1 | perl markup_oops.pl ./vmlinux
    objdump: --start-address: bad number: NaN
    No matching code found
    
    This is because in line:
    	if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+0x([0-9a-f]+)\/[a-f0-9]/) {
     		$function = $1;
     		$func_offset = $2;
     	}
    
    $func_offset will get a number like "0x2"
    
    But in follow code:
    
    my $decodestart = Math::BigInt->from_hex("0x$target") -
    Math::BigInt->from_hex("0x$func_offset");
    
    It add other ox to ox2.  Then this value will be set to NaN.
    
    So I made a small patch to fix it.
    
    Signed-off-by: Hui Zhu <teawater@gmail.com>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  31. @erikjanp @torvalds

    viafb: fix acceleration for some chips

    erikjanp authored torvalds committed
    Fix a regression in hardware acceleration which made the accelerated
    framebuffer unusable on some chips.  These need extra initialization and
    an extra flag which is no longer needed/available on current chips.
    
    Signed-off-by: Erik-Jan Post <ej.lfs@xs4all.nl>
    Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
    Cc: Scott Fang <ScottFang@viatech.com.cn>
    Cc: Joseph Chan <JosephChan@via.com.tw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  32. @erikjanp @torvalds

    viafb: do modesetting after updating variables

    erikjanp authored torvalds committed
    Reorder viafb_set_par to allow using the updated variables in
    viafb_setmode.  This fixes a regression that prevented proper runtime mode
    changes.
    
    Signed-off-by: Erik-Jan Post <ej.lfs@xs4all.nl>
    Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
    Cc: Scott Fang <ScottFang@viatech.com.cn>
    Cc: Joseph Chan <JosephChan@via.com.tw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  33. @schandinat @torvalds

    viafb: fix LCD hardware cursor regression

    schandinat authored torvalds committed
    Although I'd consider this a hardware bug, as there is hardware out that
    for whatever reason does not support hardware cursors on LCD output we
    have to care about it in the driver.  This fixes a regression (invisible
    cursor) introduced by:
    
        viafb: cleanup viafb_cursor
    
    Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
    Reported-by: Julian Wollrath <jwollrath@web.de>
    Tested-by: Julian Wollrath <jwollrath@web.de>
    Cc: Scott Fang <ScottFang@viatech.com.cn>
    Cc: Joseph Chan <JosephChan@via.com.tw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  34. @sstefani @torvalds

    kfifo: fix kfifo_out_locked race bug

    sstefani authored torvalds committed
    Fix a wrong optimization in include/linux/kfifo.h which could cause a race
    in kfifo_out_locked.
    
    Signed-off-by: Stefani Seibold <stefani@seibold.net>
    Reported-by: Johan Hovold <jhovold@gmail.com>
    Cc: Pete Zaitcev <zaitcev@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  35. i2c: Do not use device name after device_unregister

    Thadeu Lima de Souza Cascardo authored Jean Delvare committed
    dev_dbg outputs dev_name, which is released with device_unregister. This bug
    resulted in output like this:
    
    i2c Xy2�0: adapter [SMBus I801 adapter at 1880] unregistered
    
    The right output would be:
    i2c i2c-0: adapter [SMBus I801 adapter at 1880] unregistered
    
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
    Signed-off-by: Jean Delvare <khali@linux-fr.org>
Something went wrong with that request. Please try again.