1. 12 Apr, 2010 35 commits
  2. 09 Apr, 2010 5 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 0eddb519
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        IB/mlx4: Check correct variable for allocation failure
        RDMA/nes: Correct cap.max_inline_data assignment in nes_query_qp()
        RDMA/cm: Set num_paths when manually assigning path records
        IB/cm: Fix device_create() return value check
      0eddb519
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 · f1639377
      Linus Torvalds authored
      * 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
        [S390] Update default configuration.
        [S390] nss: add missing .previous statement to asm function
        [S390] increase default size of vmalloc area
        [S390] s390: disable change bit override
        [S390] fix io_return critical section cleanup
        [S390] sclp_async: potential buffer overflow
        [S390] arch/s390/kernel: Add missing unlock
      f1639377
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block · 2f408420
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.dk/linux-2.6-block: (34 commits)
        cfq-iosched: Fix the incorrect timeslice accounting with forced_dispatch
        loop: Update mtime when writing using aops
        block: expose the statistics in blkio.time and blkio.sectors for the root cgroup
        backing-dev: Handle class_create() failure
        Block: Fix block/elevator.c elevator_get() off-by-one error
        drbd: lc_element_by_index() never returns NULL
        cciss: unlock on error path
        cfq-iosched: Do not merge queues of BE and IDLE classes
        cfq-iosched: Add additional blktrace log messages in CFQ for easier debugging
        i2o: Remove the dangerous kobj_to_i2o_device macro
        block: remove 16 bytes of padding from struct request on 64bits
        cfq-iosched: fix a kbuild regression
        block: make CONFIG_BLK_CGROUP visible
        Remove GENHD_FL_DRIVERFS
        block: Export max number of segments and max segment size in sysfs
        block: Finalize conversion of block limits functions
        block: Fix overrun in lcm() and move it to lib
        vfs: improve writeback_inodes_wb()
        paride: fix off-by-one test
        drbd: fix al-to-on-disk-bitmap for 4k logical_block_size
        ...
      2f408420
    • Linus Torvalds's avatar
      Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 · 2f10ffcf
      Linus Torvalds authored
      * 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (29 commits)
        drm/nouveau: bail out of auxch transaction if we repeatedly recieve defers
        drm/nv50: implement gpio set/get routines
        drm/nv50: parse/use some more de-magiced parts of gpio table entries
        drm/nouveau: store raw gpio table entry in bios gpio structs
        drm/nv40: Init some tiling-related PGRAPH state.
        drm/nv50: Add NVA3 support in ctxprog/ctxvals generator.
        drm/nv50: another dodgy DP hack
        drm/nv50: punt hotplug irq handling out to workqueue
        drm/nv50: preserve an unknown SOR_MODECTRL value for DP encoders
        drm/nv50: Allow using the NVA3 new compute class.
        drm/nv50: cleanup properly if PDISPLAY init fails
        drm/nouveau: fixup the init failure paths some more
        drm/nv50: fix instmem init on IGPs if stolen mem crosses 4GiB mark
        drm/nv40: add LVDS table quirk for Dell Latitude D620
        drm/nv40: rework lvds table parsing
        drm/nouveau: detect vram amount once, and save the value
        drm/nouveau: remove some unused members from drm_nouveau_private
        drm/nouveau: Make use of TTM busy_placements.
        drm/nv50: add more 0x100c80 flushy magic
        drm/nv50: fix fbcon when framebuffer above 4GiB mark
        ...
      2f10ffcf
    • David Howells's avatar
      radix_tree_tag_get() is not as safe as the docs make out [ver #2] · ce82653d
      David Howells authored
      radix_tree_tag_get() is not safe to use concurrently with radix_tree_tag_set()
      or radix_tree_tag_clear().  The problem is that the double tag_get() in
      radix_tree_tag_get():
      
      		if (!tag_get(node, tag, offset))
      			saw_unset_tag = 1;
      		if (height == 1) {
      			int ret = tag_get(node, tag, offset);
      
      may see the value change due to the action of set/clear.  RCU is no protection
      against this as no pointers are being changed, no nodes are being replaced
      according to a COW protocol - set/clear alter the node directly.
      
      The documentation in linux/radix-tree.h, however, says that
      radix_tree_tag_get() is an exception to the rule that "any function modifying
      the tree or tags (...) must exclude other modifications, and exclude any
      functions reading the tree".
      
      The problem is that the next statement in radix_tree_tag_get() checks that the
      tag doesn't vary over time:
      
      			BUG_ON(ret && saw_unset_tag);
      
      This has been seen happening in FS-Cache:
      
      	https://www.redhat.com/archives/linux-cachefs/2010-April/msg00013.html
      
      To this end, remove the BUG_ON() from radix_tree_tag_get() and note in various
      comments that the value of the tag may change whilst the RCU read lock is held,
      and thus that the return value of radix_tree_tag_get() may not be relied upon
      unless radix_tree_tag_set/clear() and radix_tree_delete() are excluded from
      running concurrently with it.
      Reported-by: default avatarRomain DEGEZ <romain.degez@smartjog.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarNick Piggin <npiggin@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ce82653d