05 May, 2010

6 commits

  • key_gc_keyring() needs to either hold the RCU read lock or hold the keyring
    semaphore if it's going to scan the keyring's list. Given that it only needs
    to read the key list, and it's doing so under a spinlock, the RCU read lock is
    the thing to use.

    Furthermore, the RCU check added in e7b0a61b7929632d36cf052d9e2820ef0a9c1bfe is
    incorrect as holding the spinlock on key_serial_lock is not grounds for
    assuming a keyring's pointer list can be read safely. Instead, a simple
    rcu_dereference() inside of the previously mentioned RCU read lock is what we
    want.

    Reported-by: Serge E. Hallyn
    Signed-off-by: David Howells
    Acked-by: Serge Hallyn
    Acked-by: "Paul E. McKenney"
    Signed-off-by: James Morris

    David Howells
     
  • Fix an RCU warning in the reading of user keys:

    ===================================================
    [ INFO: suspicious rcu_dereference_check() usage. ]
    ---------------------------------------------------
    security/keys/user_defined.c:202 invoked rcu_dereference_check() without protection!

    other info that might help us debug this:

    rcu_scheduler_active = 1, debug_locks = 0
    1 lock held by keyctl/3637:
    #0: (&key->sem){+++++.}, at: [] keyctl_read_key+0x9c/0xcf

    stack backtrace:
    Pid: 3637, comm: keyctl Not tainted 2.6.34-rc5-cachefs #18
    Call Trace:
    [] lockdep_rcu_dereference+0xaa/0xb2
    [] user_read+0x47/0x91
    [] keyctl_read_key+0xac/0xcf
    [] sys_keyctl+0x75/0xb7
    [] system_call_fastpath+0x16/0x1b

    Signed-off-by: David Howells
    Acked-by: Serge Hallyn
    Signed-off-by: James Morris

    David Howells
     
  • The x86_64 call_rwsem_wait() treats the active state counter part of the
    R/W semaphore state as being 16-bit when it's actually 32-bit (it's half
    of the 64-bit state). It should do "decl %edx" not "decw %dx".

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • * 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    i2c-core: Use per-adapter userspace device lists
    i2c: Fix probing of FSC hardware monitoring chips
    i2c-core: Erase pointer to clientdata on removal

    Linus Torvalds
     
  • …/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: Fix resource leak in failure path of perf_event_open()

    Linus Torvalds
     
  • …/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:
    rcu: Fix RCU lockdep splat on freezer_fork path
    rcu: Fix RCU lockdep splat in set_task_cpu on fork path
    mutex: Don't spin when the owner CPU is offline or other weird cases

    Linus Torvalds
     

04 May, 2010

15 commits

  • Using a single list for all userspace devices leads to a dead lock
    on multiplexed buses in some circumstances (mux chip instantiated
    from userspace). This is solved by using a separate list for each
    bus segment.

    Signed-off-by: Jean Delvare
    Acked-by: Michael Lawnick

    Jean Delvare
     
  • Some FSC hardware monitoring chips (Syleus at least) doesn't like
    quick writes we typically use to probe for I2C chips. Use a regular
    byte read instead for the address they live at (0x73). These are the
    only known chips living at this address on PC systems.

    For clarity, this fix should not be needed for kernels 2.6.30 and
    later, as we started instantiating the hwmon devices explicitly based
    on DMI data. Still, this fix is valuable in the following two cases:
    * Support for recent FSC chips on older kernels. The DMI-based device
    instantiation is more difficult to backport than the device support
    itself.
    * Case where the DMI-based device instantiation fails, whatever the
    reason. We fall back to probing in that case, so it should work.

    This fixes kernel bug #15634:
    https://bugzilla.kernel.org/show_bug.cgi?id=15634

    Signed-off-by: Jean Delvare
    Acked-by: Hans de Goede
    Cc: stable@kernel.org

    Jean Delvare
     
  • After discovering that a lot of i2c-drivers leave the pointer to their
    clientdata dangling, it was decided to let the core handle this issue.
    It is assumed that the core may access the private data after remove()
    as there are no guarantees for the lifetime of such pointers anyhow (see
    thread starting at http://lkml.org/lkml/2010/3/21/68)

    Signed-off-by: Wolfram Sang
    Signed-off-by: Jean Delvare

    Wolfram Sang
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
    ceph: remove bad auth_x kmem_cache
    ceph: fix lockless caps check
    ceph: clear dir complete, invalidate dentry on replayed rename
    ceph: fix direct io truncate offset
    ceph: discard incoming messages with bad seq #
    ceph: fix seq counting for skipped messages
    ceph: add missing #includes
    ceph: fix leaked spinlock during mds reconnect
    ceph: print more useful version info on module load
    ceph: fix snap realm splits
    ceph: clear dir complete on d_move

    Linus Torvalds
     
  • It's useless, since our allocations are already a power of 2. And it was
    allocated per-instance (not globally), which caused a name collision when
    we tried to mount a second file system with auth_x enabled.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • The __ variant requires caller to hold i_lock.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • If a rename operation is resent to the MDS following an MDS restart, the
    client does not get a full reply (containing the resulting metadata) back.
    In that case, a ceph_rename() needs to compensate by doing anything useful
    that fill_inode() would have, like d_move().

    It also needs to invalidate the dentry (to workaround the vfs_rename_dir()
    bug) and clear the dir complete flag, just like fill_trace().

    Signed-off-by: Sage Weil

    Sage Weil
     
  • truncate_inode_pages_range wants the end offset to align with the last byte
    in a page.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • We can get old message seq #'s after a tcp reconnect for stateful sessions
    (i.e., the MDS). If we get a higher seq #, that is an error, and we
    shouldn't see any bad seq #'s for stateless (mon, osd) connections.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • Increment in_seq even when the message is skipped for some reason.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • Signed-off-by: Sage Weil

    Sage Weil
     
  • Signed-off-by: Sage Weil

    Sage Weil
     
  • Decouple the client version from the server side. Print relevant protocol
    and map version info instead.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • The snap realm split was checking i_snap_realm, not the list_head, to
    determine if an inode belonged in the new realm. The check always failed,
    which meant we always moved the inode, corrupting the old realm's list and
    causing various crashes.

    Also wait to release old realm reference to avoid possibility of use after
    free.

    Signed-off-by: Sage Weil

    Sage Weil
     
  • d_move() reorders the d_subdirs list, breaking the readdir result caching.
    Unless/until d_move preserves that ordering, clear CEPH_I_COMPLETE on
    rename.

    Signed-off-by: Sage Weil

    Sage Weil
     

03 May, 2010

3 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:
    watchdog: ep93xx_wdt.c fix default timout value in MODULE_PARM_DESC string.

    Linus Torvalds
     
  • As of 32a88aa1, __sync_filesystem() will return 0 if s_bdi is not set.
    And nilfs does not set s_bdi anywhere. I noticed this problem by the
    warning introduced by the recent commit 5129a469 ("Catch filesystem
    lacking s_bdi").

    WARNING: at fs/super.c:959 vfs_kern_mount+0xc5/0x14e()
    Hardware name: PowerEdge 2850
    Modules linked in: nilfs2 loop tpm_tis tpm tpm_bios video shpchp pci_hotplug output dcdbas
    Pid: 3773, comm: mount.nilfs2 Not tainted 2.6.34-rc6-debug #38
    Call Trace:
    [] warn_slowpath_common+0x60/0x90
    [] warn_slowpath_null+0xd/0x10
    [] vfs_kern_mount+0xc5/0x14e
    [] do_kern_mount+0x32/0xbd
    [] do_mount+0x671/0x6d0
    [] ? __get_free_pages+0x1f/0x21
    [] ? copy_mount_options+0x2b/0xe2
    [] ? strndup_user+0x48/0x67
    [] sys_mount+0x61/0x8f
    [] sysenter_do_call+0x12/0x32

    This ensures to set s_bdi for nilfs and fixes the sync silent failure.

    Signed-off-by: Ryusuke Konishi
    Acked-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Ryusuke Konishi
     
  • The WATCHDOG_TIMEOUT macro does not exist. The default timeout value is WDT_TIMEOUT.
    Fix the MODULE_PARM_DESC so that the code can compile again.

    reported-by: Randy Dunlap
    Signed-off-by: Wim Van Sebroeck

    Wim Van Sebroeck
     

01 May, 2010

16 commits

  • perf_event_open() kfrees event after init failure which doesn't
    release all resources allocated by perf_event_alloc(). Use
    free_event() instead.

    Signed-off-by: Tejun Heo
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Cc:
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Tejun Heo
     
  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (27 commits)
    MIPS: Loongson 2F: Fix of problems introduced by -mfix-loongson2f-jump
    MIPS: Loongson-2F: Use CONFIG_CPU_JUMP_WORKAROUNDS to control workarounds.
    MIPS: Loongson 2F: Enable fixups of the latest binutils
    MIPS: Loongson: Add CPU_LOONGSON2F_WORKAROUNDS
    MIPS: Kconfig: Make Broadcom SoC support naming consistent
    MIPS: BCM63xx: Update defconfig
    MIPS: oprofile: Fix breakage when CONFIG_OPROFILE=m
    STAGING: octeon-ethernet: Use proper phy addresses for Movidis hardware.
    NET: mdio-octeon: Enable the hardware before using it.
    I2C: Fix section mismatch errors in i2c-octeon.c
    MIPS: Loongson: Fix LOONGSON_ADDRWIN_CFG macro.
    MIPS: Loongson: Fix phys_mem_access_prot() check
    MIPS: Loongson: Fix find_vga_mem_init()
    MIPS: Loongson: Fix typo in gdium mach type string.
    MIPS: Use CKSEG1ADDR for uncached handler
    MIPS: Check for accesses beyond the end of the PGD.
    MIPS: Use uasm_i_ds{r,l}l_safe() instead of uasm_i_ds{r,l}l() in tlbex.c
    MIPS: Add uasm_i_dsrl_safe() and uasm_i_dsll_safe() to uasm.
    MIPS: die() does not call die notifier chain
    MIPS: Swarm, Littlesur: Enable PATA platform driver.
    ...

    Linus Torvalds
     
  • The -mfix-loongson2f-jump option provided by latest CVS binutils have fixed
    the out-of-order issue of Loongson-2F described in chapter 15 of the
    Loongson2F User Manual [1, 2], but introduced some problems.

    The option changes all of the jump target to "addr & 0xcfffffff" through the
    at($1) register, but for the reboot address of Loongson 2F 0xbfc00000 this is
    wrong. Avoids the problem via telling the assembler to not use the $at
    register.

    [1] Loongson2F User Manual (Chinese Version)
    http://www.loongson.cn/uploadfile/file/200808211
    [2] English Version of Chapter 15:
    http://groups.google.com.hk/group/loongson-dev/msg/e0d2e220958f10a6?dmode=source

    Reported-and-tested-by: Liu Shiwei
    Signed-off-by: Wu Zhangjin
    Cc: linux-mips
    Patchwork: http://patchwork.linux-mips.org/patch/1109/
    Signed-off-by: Ralf Baechle

    Wu Zhangjin
     
  • Signed-off-by: Wu Zhangjin
    Cc: linux-mips
    Patchwork: http://patchwork.linux-mips.org/patch/1106/
    Signed-off-by: Ralf Baechle

    Wu Zhangjin
     
  • With the "Fixups of Loongson2F" patch [1] having been applied to binutils
    for binutils 2.20.1 we now can use it's time to enable the options provided
    by the patch to compile the kernel.

    Without these fixups, the system may hang if the erratum is triggered.

    For more information on these fixups please refer to the following
    references.

    [1] "Fixups of Loongson2F" patch for binutils(actually for gas)
    http://sourceware.org/ml/binutils/2009-11/msg00387.html
    [2] Chapter 15 of "Loongson2F User Manual"(Chinese Version)
    http://www.loongson.cn/uploadfile/file/200808211
    [3] Chapter 15 of the English version Loongson 2F User Manual
    http://groups.google.com.hk/group/loongson-dev/msg/e0d2e220958f10a6?dmode=source

    Signed-off-by: Zhang Le
    Signed-off-by: Wu Zhangjin
    Cc: Zhang Le
    Cc: linux-mips
    Patchwork: http://patchwork.linux-mips.org/patch/1106/
    Signed-off-by: Ralf Baechle

    Wu Zhangjin
     
  • As documented in the Loongson 2F User Manual [2, 3], the old Loongson2F
    series (2F01 / 2F02) have the NOP & JUMP issues which requires workarounds
    in the kernel and binutils. This issue has been rectified in Loongson 2F
    series 2F03 so no workarounds needed.

    Now that the workarounds [1] adding the the -mfix-loongson2f-nop and
    -mfix-loongson2f-jump options have been comitted to the binutils the CVS
    repository), we can add the workarounds in the kernel.

    The workarounds have no significant side effect on the system but may
    decrease performance so we control them through a a new
    CPU_LOONGSON2F_WORKAROUNDS config option allowing the users to only enable
    it as necessary.

    [1] "Fixups of Loongson2F" patch for binutils(actually for gas)
    http://sourceware.org/ml/binutils/2009-11/msg00387.html
    [2] Chapter 15 of "Loongson2F User Manual"(Chinese Version)
    http://www.loongson.cn/uploadfile/file/200808211
    [3] English Version of the above chapter 15
    http://groups.google.com.hk/group/loongson-dev/msg/e0d2e220958f10a6?dmode=source

    Signed-off-by: Wu Zhangjin
    Cc: linux-mips
    Patchwork: http://patchwork.linux-mips.org/patch/1105/
    Signed-off-by: Ralf Baechle

    Wu Zhangjin
     
  • Signed-off-by: Florian Fainelli
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1082/
    Signed-off-by: Ralf Baechle

    Florian Fainelli
     
  • the defconfig was out-of-sync since 2.6.30-rc6, update it with the new
    symbols and enable BCM6338, 6345, wireless, b43 driver and LEDs support.

    Signed-off-by: Fainelli
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1081/
    Signed-off-by: Ralf Baechle

    Florian Fainelli
     
  • When the oprofile is compiled as a module do_IRQ() is not called in
    arch/mips/loongson/lemote-2f/irq.c due to a wrong #ifdef there.

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

    Wu Zhangjin
     
  • Signed-off-by: David Daney
    To: linux-mips@linux-mips.org
    To: netdev@vger.kernel.org
    To: gregkh@suse.de
    Patchwork: http://patchwork.linux-mips.org/patch/1091/
    Acked-by: David S. Miller
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Ralf Baechle

    David Daney
     
  • In some cases the mdio bus is not enabled at the time of probing.
    This prevents anything from working, so we will enable it before
    trying to use it, and disable it when the driver is removed.

    Signed-off-by: David Daney
    To: linux-mips@linux-mips.org
    To: netdev@vger.kernel.org
    To: gregkh@suse.de
    Patchwork: http://patchwork.linux-mips.org/patch/1090/
    Acked-by: David S. Miller
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Ralf Baechle

    David Daney
     
  • Signed-off-by: David Daney
    To: linux-i2c@vger.kernel.org
    To: ben-linux@fluff.org
    To: khali@linux-fr.org
    Cc: linux-mips@linux-mips.org
    Cc: rade.bozic.ext@nsn.com
    Patchwork: http://patchwork.linux-mips.org/patch/1037/
    Signed-off-by: Ralf Baechle

    David Daney
     
  • There's a typo in the LOONGSON_ADDRWIN_CFG macro. The cpu window mmap
    register address should contain the destination parameters not the
    source one. This has not been noticed because the code is only using
    source = destination.

    Signed-off-by: Arnaud Patard
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1162/
    Signed-off-by: Ralf Baechle

    Arnaud Patard
     
  • The check used to determine if uncached accelerated should be used or not
    is wrong. The parenthesis are misplaced and making the test fail.

    Signed-off-by: Arnaud Patard
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1161/
    Signed-off-by: Ralf Baechle

    Arnaud Patard
     
  • This allows to use all display device for instance DISPLAY_OTHER like SM501.

    Signed-off-by: Arnaud Patard
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1160/
    Signed-off-by: Ralf Baechle

    Richard LIU
     
  • It's not "gidum" but "gdium".

    Signed-off-by: Arnaud Patard
    Cc: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/1159/
    Signed-off-by: Ralf Baechle

    Arnaud Patard