18 May, 2010

24 commits

  • * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (24 commits)
    rcu: remove all rcu head initializations, except on_stack initializations
    rcu head introduce rcu head init on stack
    Debugobjects transition check
    rcu: fix build bug in RCU_FAST_NO_HZ builds
    rcu: RCU_FAST_NO_HZ must check RCU dyntick state
    rcu: make SRCU usable in modules
    rcu: improve the RCU CPU-stall warning documentation
    rcu: reduce the number of spurious RCU_SOFTIRQ invocations
    rcu: permit discontiguous cpu_possible_mask CPU numbering
    rcu: improve RCU CPU stall-warning messages
    rcu: print boot-time console messages if RCU configs out of ordinary
    rcu: disable CPU stall warnings upon panic
    rcu: enable CPU_STALL_VERBOSE by default
    rcu: slim down rcutiny by removing rcu_scheduler_active and friends
    rcu: refactor RCU's context-switch handling
    rcu: rename rcutiny rcu_ctrlblk to rcu_sched_ctrlblk
    rcu: shrink rcutiny by making synchronize_rcu_bh() be inline
    rcu: fix now-bogus rcu_scheduler_active comments.
    rcu: Fix bogus CONFIG_PROVE_LOCKING in comments to reflect reality.
    rcu: ignore offline CPUs in last non-dyntick-idle CPU check
    ...

    Linus Torvalds
     
  • …el/git/tip/linux-2.6-tip

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    lockdep: Reduce stack_trace usage
    lockdep: No need to disable preemption in debug atomic ops
    lockdep: Actually _dec_ in debug_atomic_dec
    lockdep: Provide off case for redundant_hardirqs_on increment
    lockdep: Simplify debug atomic ops
    lockdep: Fix redundant_hardirqs_on incremented with irqs enabled
    lockstat: Make lockstat counting per cpu
    i8253: Convert i8253_lock to raw_spinlock

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86/amd-iommu: Add amd_iommu=off command line option
    iommu-api: Remove iommu_{un}map_range functions
    x86/amd-iommu: Implement ->{un}map callbacks for iommu-api
    x86/amd-iommu: Make amd_iommu_iova_to_phys aware of multiple page sizes
    x86/amd-iommu: Make iommu_unmap_page and fetch_pte aware of page sizes
    x86/amd-iommu: Make iommu_map_page and alloc_pte aware of page sizes
    kvm: Change kvm_iommu_map_pages to map large pages
    VT-d: Change {un}map_range functions to implement {un}map interface
    iommu-api: Add ->{un}map callbacks to iommu_ops
    iommu-api: Add iommu_map and iommu_unmap functions
    iommu-api: Rename ->{un}map function pointers to ->{un}map_range

    Linus Torvalds
     
  • …/kernel/git/tip/linux-2.6-tip

    * 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    debugobjects: Section mismatch cleanup

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: (23 commits)
    cifs: fix noserverino handling when unix extensions are enabled
    cifs: don't update uniqueid in cifs_fattr_to_inode
    cifs: always revalidate hardlinked inodes when using noserverino
    [CIFS] drop quota operation stubs
    cifs: propagate cifs_new_fileinfo() error back to the caller
    cifs: add comments explaining cifs_new_fileinfo behavior
    cifs: remove unused parameter from cifs_posix_open_inode_helper()
    [CIFS] Remove unused cifs_oplock_cachep
    cifs: have decode_negTokenInit set flags in server struct
    cifs: break negotiate protocol calls out of cifs_setup_session
    cifs: eliminate "first_time" parm to CIFS_SessSetup
    [CIFS] Fix lease break for writes
    cifs: save the dialect chosen by server
    cifs: change && to ||
    cifs: rename "extended_security" to "global_secflags"
    cifs: move tcon find/create into separate function
    cifs: move SMB session creation code into separate function
    cifs: track local_nls in volume info
    [CIFS] Allow null nd (as nfs server uses) on create
    [CIFS] Fix losing locks during fork()
    ...

    Linus Torvalds
     
  • The uniqueid field sent by the server when unix extensions are enabled
    is currently used sometimes when it shouldn't be. The readdir codepath
    is correct, but most others are not. Fix it.

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • We use this value to find an inode within the hash bucket, so we can't
    change this without re-hashing the inode. For now, treat this value
    as immutable.

    Eventually, we should probably use an inode number change on a path
    based operation to indicate that the lookup cache is invalid, but that's
    a bit more code to deal with.

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • The old cifs_revalidate logic always revalidated hardlinked inodes.
    This hack allowed CIFS to pass some connectathon tests when server inode
    numbers aren't used (basic test7, in particular).

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: amiga - Floppy platform device conversion
    m68k: amiga - Sound platform device conversion
    m68k: amiga - Frame buffer platform device conversion
    m68k: amiga - Zorro host bridge platform device conversion
    m68k: amiga - Zorro bus modalias support
    platform: Make platform resource input parameters const
    m68k: invoke oom-killer from page fault
    serial167: Kill unused variables
    m68k: Implement generic_find_next_{zero_,}le_bit()
    m68k: hp300 - Checkpatch cleanup
    m68k: Remove trailing spaces in messages
    m68k: Simplify param.h by using
    m68k: Remove BKL from rtc implementations

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfs:
    logfs: handle powerfail on NAND flash
    logfs: handle errors from get_mtd_device()
    logfs: remove unused variable
    logfs: fix sync
    logfs: fix compile failure
    logfs: initialize li->li_refcount
    logfs: commit reservations under space pressure
    logfs: survive logfs_buf_recover read errors
    logfs: Close i_ino reuse race
    logfs: fix logfs_seek_hole()
    logfs: Return -EINVAL if filesystem image doesn't match
    LogFS: Fix typo in b6349ac8
    logfs: testing the wrong variable

    Linus Torvalds
     
  • * 'bkl/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:
    ptrace: Cleanup useless header
    ptrace: kill BKL in ptrace syscall

    Linus Torvalds
     
  • Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • Add Amiga Zorro bus modalias and uevent support

    Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • Make the platform resource input parameters of platform_device_add_resources()
    and platform_device_register_simple() const, as the resources are copied and
    never modified.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Greg Kroah-Hartman

    Geert Uytterhoeven
     
  • As explained in commit 1c0fe6e3bd, we want to call the architecture independent
    oom killer when getting an unexplained OOM from handle_mm_fault, rather than
    simply killing current.

    Cc: linux-m68k@lists.linux-m68k.org
    Cc: Geert Uytterhoeven
    Cc: linux-arch@vger.kernel.org
    Signed-off-by: Nick Piggin
    Acked-by: David Rientjes
    [Geert] Kill 2 introduced compiler warnings
    Signed-off-by: Geert Uytterhoeven

    Nick Piggin
     
  • commits 638157bc1461f6718eeca06bedd9a09cf1f35c36 ("serial167: prepare to push
    BKL down into drivers") and 4165fe4ef7305609a96c7f248cefb9c414d0ede5 ("tty:
    Fix up char drivers request_room usage") removed code without removing the
    corresponding variables:

    | drivers/char/serial167.c: In function 'cd2401_rx_interrupt':
    | drivers/char/serial167.c:630: warning: unused variable 'len'
    | drivers/char/serial167.c: In function 'cy_ioctl':
    | drivers/char/serial167.c:1531: warning: unused variable 'val'

    Remove the variables to kill the warnings.

    Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • linux-next:
    fs/udf/balloc.c: In function 'udf_bitmap_new_block':
    fs/udf/balloc.c:274: error: implicit declaration of function 'generic_find_next_le_bit'

    Convert ext2_find_next_{zero_,}bit() into generic_find_next_{zero_,}le_bit(),
    and wrap the ext2_find_next_{zero_,}bit() around the latter.

    Signed-off-by: Geert Uytterhoeven

    Geert Uytterhoeven
     
  • arch/m68k/hp300/time.h:2: WARNING: space prohibited between function name and open parenthesis '('

    Signed-off-by: Andrea Gelmini
    Signed-off-by: Geert Uytterhoeven

    Andrea Gelmini
     
  • Signed-off-by: Frans Pop
    Signed-off-by: Geert Uytterhoeven

    Frans Pop
     
  • Signed-off-by: Robert P. J. Day
    Signed-off-by: Geert Uytterhoeven

    Robert P. J. Day
     
  • m68k does not support SMP. The access to the rtc is already serialized
    with local_irq_save/restore which is sufficient on UP.

    The open() protection in arch/m68k/mvme16x/rtc.c is not pretty but
    sufficient on UP and safe w/o the BKL.

    open() in arch/m68k/bvme6000/rtc.c can do with the same atomic logic
    as arch/m68k/mvme16x/rtc.c

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Geert Uytterhoeven

    Thomas Gleixner
     

17 May, 2010

5 commits

  • When looking at a performance problem on PowerPC, I noticed some awful code
    generation:

    c00000000051fc98: 3b 60 00 01 li r27,1
    ...
    c00000000051fca0: 3b 80 00 00 li r28,0
    ...
    c00000000051fcdc: 93 61 00 70 stw r27,112(r1)
    c00000000051fce0: 93 81 00 74 stw r28,116(r1)
    c00000000051fce4: 81 21 00 70 lwz r9,112(r1)
    c00000000051fce8: 80 01 00 74 lwz r0,116(r1)
    c00000000051fcec: 7d 29 07 b4 extsw r9,r9
    c00000000051fcf0: 7c 00 07 b4 extsw r0,r0

    c00000000051fcf4: 7c 20 04 ac lwsync
    c00000000051fcf8: 7d 60 f8 28 lwarx r11,0,r31
    c00000000051fcfc: 7c 0b 48 00 cmpw r11,r9
    c00000000051fd00: 40 c2 00 10 bne- c00000000051fd10
    c00000000051fd04: 7c 00 f9 2d stwcx. r0,0,r31
    c00000000051fd08: 40 c2 ff f0 bne+ c00000000051fcf8
    c00000000051fd0c: 4c 00 01 2c isync

    We create two constants, write them out to the stack, read them straight back
    in and sign extend them. What a mess.

    It turns out this bad code is a result of us defining atomic_t as a
    volatile int.

    We removed the volatile attribute from the powerpc atomic_t definition years
    ago, but commit ea435467500612636f8f4fb639ff6e76b2496e4b (atomic_t: unify all
    arch definitions) added it back in.

    To dig up an old quote from Linus:

    > The fact is, volatile on data structures is a bug. It's a wart in the C
    > language. It shouldn't be used.
    >
    > Volatile accesses in *code* can be ok, and if we have "atomic_read()"
    > expand to a "*(volatile int *)&(x)->value", then I'd be ok with that.
    >
    > But marking data structures volatile just makes the compiler screw up
    > totally, and makes code for initialization sequences etc much worse.

    And screw up it does :)

    With the volatile removed, we see much more reasonable code generation:

    c00000000051f5b8: 3b 60 00 01 li r27,1
    ...
    c00000000051f5c0: 3b 80 00 00 li r28,0
    ...

    c00000000051fc7c: 7c 20 04 ac lwsync
    c00000000051fc80: 7c 00 f8 28 lwarx r0,0,r31
    c00000000051fc84: 7c 00 d8 00 cmpw r0,r27
    c00000000051fc88: 40 c2 00 10 bne- c00000000051fc98
    c00000000051fc8c: 7f 80 f9 2d stwcx. r28,0,r31
    c00000000051fc90: 40 c2 ff f0 bne+ c00000000051fc80
    c00000000051fc94: 4c 00 01 2c isync

    Six instructions less.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • In preparation for removing volatile from the atomic_t definition, this
    patch adds a volatile cast to all the atomic read functions.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
    rtnetlink: make SR-IOV VF interface symmetric
    sctp: delete active ICMP proto unreachable timer when free transport
    tcp: fix MD5 (RFC2385) support

    Linus Torvalds
     
  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
    MIPS: Oprofile: Fix Loongson irq handler
    MIPS: N32: Use compat version for sys_ppoll.
    MIPS FPU emulator: allow Cause bits of FCSR to be writeable by ctc1

    Linus Torvalds
     

16 May, 2010

11 commits

  • Now we have a set of nested attributes:

    IFLA_VFINFO_LIST (NESTED)
    IFLA_VF_INFO (NESTED)
    IFLA_VF_MAC
    IFLA_VF_VLAN
    IFLA_VF_TX_RATE

    This allows a single set to operate on multiple attributes if desired.
    Among other things, it means a dump can be replayed to set state.

    The current interface has yet to be released, so this seems like
    something to consider for 2.6.34.

    Signed-off-by: Chris Wright
    Signed-off-by: David S. Miller

    Chris Wright
     
  • transport may be free before ICMP proto unreachable timer expire, so
    we should delete active ICMP proto unreachable timer when transport
    is going away.

    Signed-off-by: Wei Yongjun
    Acked-by: Vlad Yasevich
    Signed-off-by: David S. Miller

    Wei Yongjun
     
  • TCP MD5 support uses percpu data for temporary storage. It currently
    disables preemption so that same storage cannot be reclaimed by another
    thread on same cpu.

    We also have to make sure a softirq handler wont try to use also same
    context. Various bug reports demonstrated corruptions.

    Fix is to disable preemption and BH.

    Reported-by: Bhaskar Dutta
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • The interrupt enable bit for the performance counters is in the Control
    Register $24, not in the counter register.
    loongson2_perfcount_handler(), we need to use

    Reported-by: Xu Hengyang
    Signed-off-by: Wu Zhangjin
    Cc: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1198/
    Signed-off-by: Ralf Baechle

    ---

    Wu Zhangjin
     
  • The sys_ppoll() takes struct 'struct timespec'. This is different for the
    N32 and N64 ABIs. Use the compat version to do the proper conversions.

    Signed-off-by: David Daney
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1210/
    Signed-off-by: Ralf Baechle

    ---

    Chandrakala Chavva
     
  • In the FPU emulator code of the MIPS, the Cause bits of the FCSR register
    are not currently writeable by the ctc1 instruction. In odd corner cases,
    this can cause problems. For example, a case existed where a divide-by-zero
    exception was generated by the FPU, and the signal handler attempted to
    restore the FPU registers to their state before the exception occurred. In
    this particular setup, writing the old value to the FCSR register would
    cause another divide-by-zero exception to occur immediately. The solution
    is to change the ctc1 instruction emulator code to allow the Cause bits of
    the FCSR register to be writeable. This is the behaviour of the hardware
    that the code is emulating.

    This problem was found by Shane McDonald, but the credit for the fix goes
    to Kevin Kissell. In Kevin's words:

    I submit that the bug is indeed in that ctc_op: case of the emulator. The
    Cause bits (17:12) are supposed to be writable by that instruction, but the
    CTC1 emulation won't let them be updated by the instruction. I think that
    actually if you just completely removed lines 387-388 [...] things would
    work a good deal better. At least, it would be a more accurate emulation of
    the architecturally defined FPU. If I wanted to be really, really pedantic
    (which I sometimes do), I'd also protect the reserved bits that aren't
    necessarily writable.

    Signed-off-by: Shane McDonald
    To: anemo@mba.ocn.ne.jp
    To: kevink@paralogos.com
    To: sshtylyov@mvista.com
    Patchwork: http://patchwork.linux-mips.org/patch/1205/
    Signed-off-by: Ralf Baechle

    ---

    Shane McDonald
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
    Btrfs: check for read permission on src file in the clone ioctl

    Linus Torvalds
     
  • mempool_alloc() can return null in atomic case.

    Signed-off-by: Denis Kirjanov
    Cc: Joern Engel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    kirjanov@gmail.com
     
  • As we were using an internal dma flushing routine, this patch changes to
    the DMA API flush_kernel_dcache_page(). Driver is able to compile now.

    [akpm@linux-foundation.org: flush_kernel_dcache_page() comes before kunmap_atomic()]
    Signed-off-by: Nicolas Ferre
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nicolas Ferre
     
  • The existing code would have allowed you to clone a file that was
    only open for writing

    Signed-off-by: Chris Mason

    Dan Rosenberg
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
    JFS: Free sbi memory in error path
    fs/sysv: dereferencing ERR_PTR()
    Fix double-free in logfs
    Fix the regression created by "set S_DEAD on unlink()..." commit

    Linus Torvalds