Switch branches/tags
Commits on Aug 8, 2011
  1. Linux 3.1-rc1

    torvalds committed Aug 8, 2011
Commits on Aug 7, 2011
  1. Merge git://

    torvalds committed Aug 7, 2011
    * git://
      sparc: Fix build with DEBUG_PAGEALLOC enabled.
  2. sh: Fix boot crash related to SCI

    rjwysocki authored and torvalds committed Aug 7, 2011
    Commit d006199e72a9 ("serial: sh-sci: Regtype probing doesn't need to be
    fatal.") made sci_init_single() return when sci_probe_regmap() succeeds,
    although it should return when sci_probe_regmap() fails.  This causes
    systems using the serial sh-sci driver to crash during boot.
    Fix the problem by using the right return condition.
    Signed-off-by: Rafael J. Wysocki <>
    Signed-off-by: Linus Torvalds <>
  3. arm: remove stale export of 'sha_transform'

    torvalds committed Aug 7, 2011
    The generic library code already exports the generic function, this was
    left-over from the ARM-specific version that just got removed.
    Signed-off-by: Linus Torvalds <>
  4. arm: remove "optimized" SHA1 routines

    torvalds committed Aug 7, 2011
    Since commit 1eb19a1 ("lib/sha1: use the git implementation of
    SHA-1"), the ARM SHA1 routines no longer work.  The reason? They
    depended on the larger 320-byte workspace, and now the sha1 workspace is
    just 16 words (64 bytes).  So the assembly version would overwrite the
    stack randomly.
    The optimized asm version is also probably slower than the new improved
    C version, so there's no reason to keep it around.  At least that was
    the case in git, where what appears to be the same assembly language
    version was removed two years ago because the optimized C BLK_SHA1 code
    was faster.
    Reported-and-tested-by: Joachim Eastwood <>
    Cc: Andreas Schwab <>
    Cc: Nicolas Pitre <>
    Signed-off-by: Linus Torvalds <>
  5. fix rcu annotations noise in cred.h

    Al Viro authored and torvalds committed Aug 7, 2011
    task->cred is declared as __rcu, and access to other tasks' ->cred is,
    indeed, protected.  Access to current->cred does not need rcu_dereference()
    at all, since only the task itself can change its ->cred.  sparse, of
    course, has no way of knowing that...
    Add force-cast in current_cred(), make current_fsuid() use it.
    Signed-off-by: Al Viro <>
    Signed-off-by: Linus Torvalds <>
  6. vfs: rename 'do_follow_link' to 'should_follow_link'

    torvalds committed Aug 7, 2011
    Al points out that the do_follow_link() helper function really is
    misnamed - it's about whether we should try to follow a symlink or not,
    not about actually doing the following.
    Signed-off-by: Linus Torvalds <>
  7. Fix POSIX ACL permission check

    Hadrianus authored and Al Viro committed Aug 6, 2011
    After commit 3567866: "RCUify freeing acls, let check_acl() go ahead in
    RCU mode if acl is cached" posix_acl_permission is being called with an
    unsupported flag and the permission check fails. This patch fixes the issue.
    Signed-off-by: Ari Savolainen <>
    Signed-off-by: Al Viro <>
  8. Merge branch 'for-linus' of git://

    torvalds committed Aug 7, 2011
    * 'for-linus' of git://
      ore: Make ore its own module
      exofs: Rename raid engine from exofs/ios.c => ore
      exofs: ios: Move to a per inode components & device-table
      exofs: Move exofs specific osd operations out of ios.c
      exofs: Add offset/length to exofs_get_io_state
      exofs: Fix truncate for the raid-groups case
      exofs: Small cleanup of exofs_fill_super
      exofs: BUG: Avoid sbi realloc
      exofs: Remove pnfs-osd private definitions
      nfs_xdr: Move nfs4_string definition out of #ifdef CONFIG_NFS_V4
  9. vfs: optimize inode cache access patterns

    torvalds committed Aug 7, 2011
    The inode structure layout is largely random, and some of the vfs paths
    really do care.  The path lookup in particular is already quite D$
    intensive, and profiles show that accessing the 'inode->i_op->xyz'
    fields is quite costly.
    We already optimized the dcache to not unnecessarily load the d_op
    structure for members that are often NULL using the DCACHE_OP_xyz bits
    in dentry->d_flags, and this does something very similar for the inode
    ops that are used during pathname lookup.
    It also re-orders the fields so that the fields accessed by 'stat' are
    together at the beginning of the inode structure, and roughly in the
    order accessed.
    The effect of this seems to be in the 1-2% range for an empty kernel
    "make -j" run (which is fairly kernel-intensive, mostly in filename
    lookup), so it's visible.  The numbers are fairly noisy, though, and
    likely depend a lot on exact microarchitecture.  So there's more tuning
    to be done.
    Signed-off-by: Linus Torvalds <>
  10. vfs: renumber DCACHE_xyz flags, remove some stale ones

    torvalds committed Aug 7, 2011
    Gcc tends to generate better code with small integers, including the
    DCACHE_xyz flag tests - so move the common ones to be first in the list.
    Also just remove the unused DCACHE_INOTIFY_PARENT_WATCHED and
    DCACHE_AUTOFS_PENDING values, their users no longer exists in the source
    And add a "unlikely()" to the DCACHE_OP_COMPARE test, since we want the
    common case to be a nice straight-line fall-through.
    Signed-off-by: Linus Torvalds <>
  11. Merge git://

    torvalds committed Aug 7, 2011
    * git://
      net: Compute protocol sequence numbers and fragment IDs using MD5.
      crypto: Move md5_transform to lib/md5.c
  12. ore: Make ore its own module

    Boaz Harrosh
    Boaz Harrosh committed Aug 7, 2011
    Export everything from ore need exporting. Change Kbuild and Kconfig
    to build ore.ko as an independent module. Import ore from exofs
    Signed-off-by: Boaz Harrosh <>
  13. exofs: Rename raid engine from exofs/ios.c => ore

    Boaz Harrosh
    Boaz Harrosh committed Aug 7, 2011
    ORE stands for "Objects Raid Engine"
    This patch is a mechanical rename of everything that was in ios.c
    and its API declaration to an ore.c and an osd_ore.h header. The ore
    engine will later be used by the pnfs objects layout driver.
    * File ios.c => ore.c
    * Declaration of types and API are moved from exofs.h to a new
    * All used types are prefixed by ore_ from their exofs_ name.
    * Shift includes from exofs.h to osd_ore.h so osd_ore.h is
      independent, include it from exofs.h.
    Other than a pure rename there are no other changes. Next patch
    will move the ore into it's own module and will export the API
    to be used by exofs and later the layout driver
    Signed-off-by: Boaz Harrosh <>
  14. exofs: ios: Move to a per inode components & device-table

    Boaz Harrosh
    Boaz Harrosh committed Aug 5, 2011
    Exofs raid engine was saving on memory space by having a single layout-info,
    single pid, and a single device-table, global to the filesystem. Then passing
    a credential and object_id info at the io_state level, private for each
    inode. It would also devise this contraption of rotating the device table
    view for each inode->ino to spread out the device usage.
    This is not compatible with the pnfs-objects standard, demanding that
    each inode can have it's own layout-info, device-table, and each object
    component it's own pid, oid and creds.
    So: Bring exofs raid engine to be usable for generic pnfs-objects use by:
    * Define an exofs_comp structure that holds obj_id and credential info.
    * Break up exofs_layout struct to an exofs_components structure that holds a
      possible array of exofs_comp and the array of devices + the size of the
    * Add a "comps" parameter to get_io_state() that specifies the ids creds
      and device array to use for each IO.
      This enables to keep the layout global, but the device-table view, creds
      and IDs at the inode level. It only adds two 64bit to each inode, since
      some of these members already existed in another form.
    * ios raid engine now access layout-info and comps-info through the passed
      pointers. Everything is pre-prepared by caller for generic access of
      these structures and arrays.
    At the exofs Level:
    * Super block holds an exofs_components struct that holds the device
      array, previously in layout. The devices there are in device-table
      order. The device-array is twice bigger and repeats the device-table
      twice so now each inode's device array can point to a random device
      and have a round-robin view of the table, making it compatible to
      previous exofs versions.
    * Each inode has an exofs_components struct that is initialized at
      load time, with it's own view of the device table IDs and creds.
      When doing IO this gets passed to the io_state together with the
    While preforming this change. Bugs where found where credentials with the
    wrong IDs where used to access the different SB objects (super.c). As well
    as some dead code. It was never noticed because the target we use does not
    check the credentials.
    Signed-off-by: Boaz Harrosh <>
  15. exofs: Move exofs specific osd operations out of ios.c

    Boaz Harrosh
    Boaz Harrosh committed May 16, 2011
    ios.c will be moving to an external library, for use by the
    objects-layout-driver. Remove from it some exofs specific functions.
    Also g_attr_logical_length is used both by inode.c and ios.c
    move definition to the later, to keep it independent
    Signed-off-by: Boaz Harrosh <>
  16. exofs: Add offset/length to exofs_get_io_state

    Boaz Harrosh
    Boaz Harrosh committed Nov 16, 2010
    In future raid code we will need to know the IO offset/length
    and if it's a read or write to determine some of the array
    sizes we'll need.
    So add a new exofs_get_rw_state() API for use when
    writeing/reading. All other simple cases are left using the
    old way.
    The major change to this is that now we need to call
    exofs_get_io_state later at inode.c::read_exec and
    inode.c::write_exec when we actually know these things. So this
    patch is kept separate so I can test things apart from other
    Signed-off-by: Boaz Harrosh <>
  17. net: Compute protocol sequence numbers and fragment IDs using MD5.

    davem330 committed Aug 4, 2011
    Computers have become a lot faster since we compromised on the
    partial MD4 hash which we use currently for performance reasons.
    MD5 is a much safer choice, and is inline with both RFC1948 and
    other ISS generators (OpenBSD, Solaris, etc.)
    Furthermore, only having 24-bits of the sequence number be truly
    unpredictable is a very serious limitation.  So the periodic
    regeneration and 8-bit counter have been removed.  We compute and
    use a full 32-bit sequence number.
    For ipv6, DCCP was found to use a 32-bit truncated initial sequence
    number (it needs 43-bits) and that is fixed here as well.
    Reported-by: Dan Kaminsky <>
    Tested-by: Willy Tarreau <>
    Signed-off-by: David S. Miller <>
  18. crypto: Move md5_transform to lib/md5.c

    davem330 committed Aug 4, 2011
    We are going to use this for TCP/IP sequence number and fragment ID
    Signed-off-by: David S. Miller <>
Commits on Aug 6, 2011
  1. Merge git://

    torvalds committed Aug 6, 2011
    * git://
      cifs: cope with negative dentries in cifs_get_root
      cifs: convert prefixpath delimiters in cifs_build_path_to_root
      CIFS: Fix missing a decrement of inFlight value
      cifs: demote DFS referral lookup errors to cFYI
      Revert "cifs: advertise the right receive buffer size to the server"
  2. Merge branch 'pm-fixes' of git://…

    torvalds committed Aug 6, 2011
    * 'pm-fixes' of git://
      PM / Runtime: Allow _put_sync() from interrupts-disabled context
      PM / Domains: Fix pm_genpd_poweron()
  3. Merge branch 'for_linus' of git://…

    torvalds committed Aug 6, 2011
    * 'for_linus' of git:// (38 commits)
      acer-wmi: support Lenovo ideapad S205 wifi switch
      acerhdf.c: spaces in aliased changed to *
      platform-drivers-x86: ideapad-laptop: add missing ideapad_input_exit in ideapad_acpi_add error path
      x86 driver: fix typo in TDP override enabling
      Platform: fix samsung-laptop DMI identification for N150/N210/220/N230
      dell-wmi: Add keys for Dell XPS L502X
      platform-drivers-x86: samsung-q10: make dmi_check_callback return 1
      Platform: Samsung Q10 backlight driver
      platform-drivers-x86: intel_scu_ipc: convert to DEFINE_PCI_DEVICE_TABLE
      platform-drivers-x86: intel_rar_register: convert to DEFINE_PCI_DEVICE_TABLE
      platform-drivers-x86: intel_menlow: add missing return AE_OK for intel_menlow_register_sensor()
      platform-drivers-x86: intel_mid_thermal: fix memory leak
      platform-drivers-x86: msi-wmi: add missing sparse_keymap_free in msi_wmi_init error path
      Samsung Laptop platform driver: support N510
      asus-wmi: add uwb rfkill support
      asus-wmi: add gps rfkill support
      asus-wmi: add CWAP support and clarify the meaning of WAPF bits
      asus-wmi: return proper value in store_cpufv()
      asus-wmi: check for temp1 presence
      asus-wmi: add thermal sensor
  4. Merge branch 'stable/bug.fixes' of git://…

    torvalds committed Aug 6, 2011
    * 'stable/bug.fixes' of git://
      xen/trace: Fix compile error when CONFIG_XEN_PRIVILEGED_GUEST is not set
      xen: Fix misleading WARN message at xen_release_chunk
      xen: Fix printk() format in xen/setup.c
      xen/tracing: it looks like we wanted CONFIG_FTRACE
      xen/self-balloon: Add dependency on tmem.
      xen/balloon: Fix compile errors - missing header files.
      xen/grant: Fix compile warning.
      xen/pciback: remove duplicated #include
  5. Merge branch 'release' of git://…

    torvalds committed Aug 6, 2011
    * 'release' of git://
      Battery: sysfs_remove_battery(): possible circular locking
  6. savagedb: Fix typo causing regression in savage4 series video chip de…

    jpsinthemix authored and torvalds committed Aug 4, 2011
    Two additional savage4 variants were added, but the S3_SAVAGE4_SERIES
    macro was incompletely modified, resulting in a false positive detection
    of a savage4 card regardless of which savage card is actually present.
    For non-savage4 series cards, such as a Savage/IX-MV card, this results
    in garbled video and/or a hard-hang at boot time.  Fix this by changing
    an '||' to an '&&' in the S3_SAVAGE4_SERIES macro.
    Signed-off-by: John P. Stanley <>
    Reviewed-by: Tormod Volden <>
    [ The macros have incomplete parenthesis too, but whatever ..  -Linus ]
    Signed-off-by: Linus Torvalds <>
  7. CodingStyle: Document the exception of not splitting user-visible str…

    joshtriplett authored and torvalds committed Aug 3, 2011
    …ings, for grepping
    Patch reviewers now recommend not splitting long user-visible strings,
    such as printk messages, even if they exceed 80 columns.  This avoids
    breaking grep.  However, that recommendation did not actually appear
    anywhere in Documentation/CodingStyle.
    See, for example, the thread at
    Signed-off-by: Josh Triplett <>
    Signed-off-by: Linus Torvalds <>
  8. vfs: show O_CLOEXE bit properly in /proc/<pid>/fdinfo/<fd> files

    torvalds committed Aug 6, 2011
    The CLOEXE bit is magical, and for performance (and semantic) reasons we
    don't actually maintain it in the file descriptor itself, but in a
    separate bit array.  Which means that when we show f_flags, the CLOEXE
    status is shown incorrectly: we show the status not as it is now, but as
    it was when the file was opened.
    Fix that by looking up the bit properly in the 'fdt->close_on_exec' bit
    Uli needs this in order to re-implement the pfiles program:
      "For normal file descriptors (not sockets) this was the last piece of
       information which wasn't available.  This is all part of my 'give
       Solaris users no reason to not switch' effort.  I intend to offer the
       code to the util-linux-ng maintainers."
    Requested-by: Ulrich Drepper <>
    Signed-off-by: Linus Torvalds <>
  9. oom_ajd: don't use WARN_ONCE, just use printk_once

    torvalds committed Aug 6, 2011
    WARN_ONCE() is very annoying, in that it shows the stack trace that we
    don't care about at all, and also triggers various user-level "kernel
    oopsed" logic that we really don't care about.  And it's not like the
    user can do anything about the applications (sshd) in question, it's a
    distro issue.
    Requested-by: Andi Kleen <> (and many others)
    Signed-off-by: Linus Torvalds <>
  10. lib/sha1: use the git implementation of SHA-1

    Mandeep Singh Baines authored and torvalds committed Aug 6, 2011
    For ChromiumOS, we use SHA-1 to verify the integrity of the root
    filesystem.  The speed of the kernel sha-1 implementation has a major
    impact on our boot performance.
    To improve boot performance, we investigated using the heavily optimized
    sha-1 implementation used in git.  With the git sha-1 implementation, we
    see a 11.7% improvement in boot time.
    10 reboots, remove slowest/fastest.
      Mean: 6.58 seconds Stdev: 0.14
    After (with git sha-1, this patch):
      Mean: 5.89 seconds Stdev: 0.07
    The other cool thing about the git SHA-1 implementation is that it only
    needs 64 bytes of stack for the workspace while the original kernel
    implementation needed 320 bytes.
    Signed-off-by: Mandeep Singh Baines <>
    Cc: Ramsay Jones <>
    Cc: Nicolas Pitre <>
    Cc: Herbert Xu <>
    Cc: David S. Miller <>
    Signed-off-by: Linus Torvalds <>
  11. sparc: Fix build with DEBUG_PAGEALLOC enabled.

    davem330 committed Aug 6, 2011
    arch/sparc/mm/init_64.c:1622:22: error: unused variable '__swapper_4m_tsb_phys_patch_end' [-Werror=unused-variable]
    arch/sparc/mm/init_64.c:1621:22: error: unused variable '__swapper_4m_tsb_phys_patch' [-Werror=unused-variable]
    Signed-off-by: David S. Miller <>
  12. Battery: sysfs_remove_battery(): possible circular locking

    sergey-senozhatsky authored and lenb committed Aug 5, 2011
    Commit 9c921c2
    Author: Lan Tianyu <>
        ACPI / Battery: Resolve the race condition in the sysfs_remove_battery()
    fixed BUG , but as a side
    effect made lockdep unhappy with sysfs_remove_battery():
    [14818.477170] =======================================================
    [14818.477200] [ INFO: possible circular locking dependency detected ]
    [14818.477221] 3.1.0-dbg-07865-g1280ea8-dirty #668
    [14818.477236] -------------------------------------------------------
    [14818.477257] s2ram/1599 is trying to acquire lock:
    [14818.477276]  (s_active#8){++++.+}, at: [<ffffffff81169147>] sysfs_addrm_finish+0x31/0x5a
    [14818.477325] but task is already holding lock:
    [14818.477350]  (&battery->lock){+.+.+.}, at: [<ffffffffa0047278>] sysfs_remove_battery+0x10/0x4b [battery]
    [14818.477397] which lock already depends on the new lock.
    [14818.479121] stack backtrace:
    [14818.479148] Pid: 1599, comm: s2ram Not tainted 3.1.0-dbg-07865-g1280ea8-dirty #668
    [14818.479175] Call Trace:
    [14818.479198]  [<ffffffff814828c3>] print_circular_bug+0x293/0x2a4
    [14818.479228]  [<ffffffff81070cb5>] __lock_acquire+0xfe4/0x164b
    [14818.479260]  [<ffffffff81169147>] ? sysfs_addrm_finish+0x31/0x5a
    [14818.479288]  [<ffffffff810718d2>] lock_acquire+0x138/0x1ac
    [14818.479316]  [<ffffffff81169147>] ? sysfs_addrm_finish+0x31/0x5a
    [14818.479345]  [<ffffffff81168a79>] sysfs_deactivate+0x9b/0xec
    [14818.479373]  [<ffffffff81169147>] ? sysfs_addrm_finish+0x31/0x5a
    [14818.479405]  [<ffffffff81169147>] sysfs_addrm_finish+0x31/0x5a
    [14818.479433]  [<ffffffff81167bc5>] sysfs_hash_and_remove+0x54/0x77
    [14818.479461]  [<ffffffff811681b9>] sysfs_remove_file+0x12/0x14
    [14818.479488]  [<ffffffff81385bf8>] device_remove_file+0x12/0x14
    [14818.479516]  [<ffffffff81386504>] device_del+0x119/0x17c
    [14818.479542]  [<ffffffff81386575>] device_unregister+0xe/0x1a
    [14818.479570]  [<ffffffff813c6ef9>] power_supply_unregister+0x23/0x27
    [14818.479601]  [<ffffffffa004729c>] sysfs_remove_battery+0x34/0x4b [battery]
    [14818.479632]  [<ffffffffa004778f>] battery_notify+0x2c/0x3a [battery]
    [14818.479662]  [<ffffffff8148fe82>] notifier_call_chain+0x74/0xa1
    [14818.479692]  [<ffffffff810624b4>] __blocking_notifier_call_chain+0x6c/0x89
    [14818.479722]  [<ffffffff810624e0>] blocking_notifier_call_chain+0xf/0x11
    [14818.479751]  [<ffffffff8107e40e>] pm_notifier_call_chain+0x15/0x27
    [14818.479770]  [<ffffffff8107ee1a>] enter_state+0xa7/0xd5
    [14818.479782]  [<ffffffff8107e341>] state_store+0xaa/0xc0
    [14818.479795]  [<ffffffff8107e297>] ? pm_async_store+0x45/0x45
    [14818.479807]  [<ffffffff81248837>] kobj_attr_store+0x17/0x19
    [14818.479820]  [<ffffffff81167e27>] sysfs_write_file+0x103/0x13f
    [14818.479834]  [<ffffffff81109037>] vfs_write+0xad/0x13d
    [14818.479847]  [<ffffffff811092b2>] sys_write+0x45/0x6c
    [14818.479860]  [<ffffffff81492f92>] system_call_fastpath+0x16/0x1b
    This patch introduces separate lock to struct acpi_battery to
    grab in sysfs_remove_battery() instead of battery->lock.
    So fix by Lan Tianyu is still there, we just grab independent lock.
    Signed-off-by: Sergey Senozhatsky <>
    Tested-by: Lan Tianyu <>
    Signed-off-by: Len Brown <>
Commits on Aug 5, 2011
  1. PM / Runtime: Allow _put_sync() from interrupts-disabled context

    Kevin Hilman authored and rjwysocki committed Aug 5, 2011
    Currently the use of pm_runtime_put_sync() is not safe from
    interrupts-disabled context because rpm_idle() will release the
    spinlock and enable interrupts for the idle callbacks.  This enables
    interrupts during a time where interrupts were expected to be
    disabled, and can have strange side effects on drivers that expected
    interrupts to be disabled.
    This is not a bug since the documentation clearly states that only
    _put_sync_suspend() is safe in IRQ-safe mode.
    However, pm_runtime_put_sync() could be made safe when in IRQ-safe
    mode by releasing the spinlock but not re-enabling interrupts, which
    is what this patch aims to do.
    Problem was found when using some buggy drivers that set
    pm_runtime_irq_safe() and used _put_sync() in interrupts-disabled
    Reported-by: Colin Cross <>
    Tested-by: Nishanth Menon <>
    Signed-off-by: Kevin Hilman <>
    Signed-off-by: Rafael J. Wysocki <>
  2. PM / Domains: Fix pm_genpd_poweron()

    rjwysocki committed Aug 5, 2011
    The local variable ret is defined twice in pm_genpd_poweron(), which
    causes this function to always return 0, even if the PM domain's
    .power_on() callback fails, in which case an error code should be
    Remove the wrong second definition of ret and additionally remove an
    unnecessary definition of wait from pm_genpd_poweron().
    Signed-off-by: Rafael J. Wysocki <>
  3. acer-wmi: support Lenovo ideapad S205 wifi switch

    Lee, Chun-Yi Matthew Garrett
    Lee, Chun-Yi authored and Matthew Garrett committed Jul 30, 2011
    The AMW0 function in acer-wmi works on Lenovo ideapad S205 for control
    the wifi hardware state. We also found there have a 0x78 EC register
    exposes the state of wifi hardware switch on the machine.
    So, add this patch to support Lenovo ideapad S205 wifi hardware switch
    in acer-wmi driver.
    Reference: bko#37892
    Cc: Carlos Corbacho <>
    Cc: Matthew Garrett <>
    Cc: Dmitry Torokhov <>
    Cc: Corentin Chary <>
    Cc: Thomas Renninger <>
    Tested-by: Florian Heyer <>
    Signed-off-by: Lee, Chun-Yi <>
    Signed-off-by: Matthew Garrett <>