19 May, 2011

1 commit


18 May, 2011

1 commit


17 May, 2011

2 commits


10 May, 2011

4 commits


06 May, 2011

1 commit


27 Apr, 2011

2 commits

  • Commit c69e8d9c01db ("CRED: Use RCU to access another task's creds and to
    release a task's own creds") added calls to get_task_cred and put_cred in
    audit_filter_rules. Profiling with a large number of audit rules active
    on the exit chain shows that we are spending upto 48% in this routine for
    syscall intensive tests, most of which is in the atomic ops.

    1. The code should be accessing tsk->cred rather than tsk->real_cred.
    2. Since tsk is current (or tsk is being created by copy_process) access to
    tsk->cred without rcu read lock is possible. At the request of the audit
    maintainer, a new flag has been added to audit_filter_rules in order to make
    this explicit and guide future code.

    Signed-off-by: Tony Jones
    Acked-by: Eric Paris
    Signed-off-by: Jiri Kosina

    Tony Jones
     
  • This is a partial revert of 6eab04a87677 ("treewide: remove extra
    semicolons"). Wireless tree removes the code in question in rtlwifi
    driver, so drop the hunk to avoid conflict.

    Reported-by: Stephen Rothwell
    Signed-off-by: Jiri Kosina

    Jiri Kosina
     

26 Apr, 2011

12 commits

  • Using C line continuation inside format strings is error prone.
    Clean up the unintended whitespace introduced by misuse of \.
    Neaten correctly used line continations as well for consistency.

    drivers/scsi/arcmsr/arcmsr_hba.c has these errors as well,
    but arcmsr needs a lot more work and the driver should likely be
    moved to staging instead.

    Signed-off-by: Joe Perches
    Acked-by: Randy Dunlap
    Signed-off-by: Jiri Kosina

    Joe Perches
     
  • Fast-forwarded to current state of Linus' tree as there are patches to be
    applied for files that didn't exist on the old branch.

    Jiri Kosina
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:
    eCryptfs: Flush dirty pages in setattr
    eCryptfs: Handle failed metadata read in lookup
    eCryptfs: Add reference counting to lower files
    eCryptfs: dput dentries returned from dget_parent
    eCryptfs: Remove extra d_delete in ecryptfs_rmdir

    Linus Torvalds
     
  • * 'for-torvalds' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson:
    rtc: fix coh901331 startup crash
    mach-ux500: fix i2c0 device setup regression

    Linus Torvalds
     
  • Now that the security modules can decide whether they support the
    dcache RCU walk or not it's possible to make selinux a bit more
    RCU friendly. The SELinux AVC and security server access decision
    code is RCU safe. A specific piece of the LSM audit code may not
    be RCU safe.

    This patch makes the VFS RCU walk retry if it would hit the non RCU
    safe chunk of code. It will normally just work under RCU. This is
    done simply by passing the VFS RCU state as a flag down into the
    avc_audit() code and returning ECHILD there if it would have an issue.

    Based-on-patch-by: Andi Kleen
    Signed-off-by: Eric Paris
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • Now that the whole dcache_hash_bucket crap is gone, go all the way and
    also remove the weird locking layering violations for locking the hash
    buckets. Add hlist_bl_lock/unlock helpers to move the locking into the
    list abstraction instead of requiring each caller to open code it.
    After all allowing for the bit locks is the whole point of these helpers
    over the plain hlist variant.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • When we are waiting for the bit-lock to be released, and are looping
    over the 'cpu_relax()' should not be doing anything else - otherwise we
    miss the point of trying to do the whole 'cpu_relax()'.

    Do the preemption enable/disable around the loop, rather than inside of
    it.

    Noticed when I was looking at the code generation for the dcache
    __d_drop usage, and the code just looked very odd.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • After 57db4e8d73ef2b5e94a3f412108dff2576670a8a changed eCryptfs to
    write-back caching, eCryptfs page writeback updates the lower inode
    times due to the use of vfs_write() on the lower file.

    To preserve inode metadata changes, such as 'cp -p' does with
    utimensat(), we need to flush all dirty pages early in
    ecryptfs_setattr() so that the user-updated lower inode metadata isn't
    clobbered later in writeback.

    https://bugzilla.kernel.org/show_bug.cgi?id=33372

    Reported-by: Rocko
    Signed-off-by: Tyler Hicks

    Tyler Hicks
     
  • When failing to read the lower file's crypto metadata during a lookup,
    eCryptfs must continue on without throwing an error. For example, there
    may be a plaintext file in the lower mount point that the user wants to
    delete through the eCryptfs mount.

    If an error is encountered while reading the metadata in lookup(), the
    eCryptfs inode's size could be incorrect. We must be sure to reread the
    plaintext inode size from the metadata when performing an open() or
    setattr(). The metadata is already being read in those paths, so this
    adds minimal performance overhead.

    This patch introduces a flag which will track whether or not the
    plaintext inode size has been read so that an incorrect i_size can be
    fixed in the open() or setattr() paths.

    https://bugs.launchpad.net/bugs/509180

    Cc:
    Signed-off-by: Tyler Hicks

    Tyler Hicks
     
  • For any given lower inode, eCryptfs keeps only one lower file open and
    multiplexes all eCryptfs file operations through that lower file. The
    lower file was considered "persistent" and stayed open from the first
    lookup through the lifetime of the inode.

    This patch keeps the notion of a single, per-inode lower file, but adds
    reference counting around the lower file so that it is closed when not
    currently in use. If the reference count is at 0 when an operation (such
    as open, create, etc.) needs to use the lower file, a new lower file is
    opened. Since the file is no longer persistent, all references to the
    term persistent file are changed to lower file.

    Locking is added around the sections of code that opens the lower file
    and assign the pointer in the inode info, as well as the code the fputs
    the lower file when all eCryptfs users are done with it.

    This patch is needed to fix issues, when mounted on top of the NFSv3
    client, where the lower file is left silly renamed until the eCryptfs
    inode is destroyed.

    Signed-off-by: Tyler Hicks

    Tyler Hicks
     
  • Call dput on the dentries previously returned by dget_parent() in
    ecryptfs_rename(). This is needed for supported eCryptfs mounts on top
    of the NFSv3 client.

    Signed-off-by: Tyler Hicks

    Tyler Hicks
     
  • vfs_rmdir() already calls d_delete() on the lower dentry. That was being
    duplicated in ecryptfs_rmdir() and caused a NULL pointer dereference
    when NFSv3 was the lower filesystem.

    Signed-off-by: Tyler Hicks

    Tyler Hicks
     

24 Apr, 2011

17 commits

  • * dcache-cleanup:
    vfs: get rid of insane dentry hashing rules

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    libata: ahci_start_engine compliant to AHCI spec
    ata: pata_at91.c bugfix for initial_timing initialisation
    ata: pata_at91.c bugfix for high master clock
    ahci: AHCI-mode SATA patch for Intel Panther Point DeviceIDs
    ata_piix: IDE-mode SATA patch for Intel Panther Point DeviceIDs
    libata: Pioneer DVR-216D can't do SETXFER
    ahci: don't enable port irq before handler is registered
    libata: Implement ATA_FLAG_NO_DIPM and apply it to mcp65
    libata: Kill unused ATA_DFLAG_{H|D}IPM flags
    ahci: EM supported message type sysfs attribute

    Linus Torvalds
     
  • * 'for-linus' of git://git.infradead.org/ubifs-2.6:
    UBIFS: fix master node recovery
    UBIFS: fix false assertion warning in case of I/O failures
    UBIFS: fix false space checking failure

    Linus Torvalds
     
  • At the end of section 10.1 of AHCI spec (rev 1.3), it states

    Software shall not set PxCMD.ST to 1 until it is determined that
    a functoinal device is present on the port as determined by
    PxTFD.STS.BSY=0, PxTFD.STS.DRQ=0 and PxSSTS.DET=3h

    Even though most AHCI host controller works without this check,
    specific controller will fail under this condition.

    Signed-off-by: Jian Peng
    Signed-off-by: Jeff Garzik

    Jian Peng
     
  • The "struct ata_timing" must contain 10 members, but ".dmack_hold" member was
    forgotten for "initial_timing" initialisation. This patch fixes such a problem.

    Signed-off-by: Igor Plyatov
    Signed-off-by: Jeff Garzik

    Igor Plyatov
     
  • The AT91SAM9 microcontrollers with master clock higher then 105 MHz
    and PIO0, have overflow of the NCS_RD_PULSE value in the MSB. This
    lead to "NCS_RD_PULSE" pulse longer then "NRD_CYCLE" pulse and driver
    does not detect ATA device.

    Signed-off-by: Igor Plyatov
    Signed-off-by: Jeff Garzik

    Igor Plyatov
     
  • The previously submitted patch was word-wrapped.

    This patch adds the AHCI-mode SATA DeviceIDs for the Intel Panther Point PCH.

    Signed-off-by: Seth Heasley
    Signed-off-by: Jeff Garzik

    Seth Heasley
     
  • The previously submitted patch was word-wrapped.

    This patch adds the IDE-mode SATA DeviceIDs for the Intel Panther
    Point PCH.

    Signed-off-by: Seth Heasley
    Signed-off-by: Jeff Garzik

    Seth Heasley
     
  • Commit 4a5610a04d415ed94af75bb1159d2621d62c8328 fixed an issue with
    the Pioneer DVR-212D not handling SETXFER correctly. An openSUSE user
    reported a similar issue with his DVR-216D that the NOSETXFER horkage
    worked around for him as well.

    This patch adds the DVR-216D (1.08) to the horkage list for NOSETXFER.

    The issue was reported at:
    https://bugzilla.novell.com/show_bug.cgi?id=679143

    Reported-by: Volodymyr Kyrychenko
    Signed-off-by: Jeff Mahoney
    Signed-off-by: Jeff Garzik

    Jeff Mahoney
     
  • The ahci_pmp_attach() & ahci_pmp_detach() unmask port irqs, but they
    are also called during port initialization, before ahci host irq
    handler is registered. On ce4100 platform, this sometimes triggers
    "irq 4: nobody cared" message when loading driver.

    Fixed this by not touching the register if the port is in frozen
    state, and mark all uninitialized port as frozen.

    Signed-off-by: Maxime Bizon
    Acked-by: Tejun Heo
    Cc: stable@kernel.org
    Signed-off-by: Jeff Garzik

    Maxime Bizon
     
  • NVIDIA mcp65 familiy of controllers cause command timeouts when DIPM
    is used. Implement ATA_FLAG_NO_DIPM and apply it.

    This problem was reported by Stefan Bader in the following thread.

    http://thread.gmane.org/gmane.linux.ide/48841

    stable: applicable to 2.6.37 and 38.

    Signed-off-by: Tejun Heo
    Reported-by: Stefan Bader
    Cc: stable@kernel.org
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • ATA_DFLAG_{H|D}IPM flags are no longer used. Kill them.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • This patch adds an sysfs attribute 'em_message_supported' to the
    ahci host device which prints out the supported enclosure management
    message types.

    Signed-off-by: Hannes Reinecke
    Signed-off-by: Jeff Garzik

    Hannes Reinecke
     
  • Commit 40aee729b350 ('kconfig: fix default value for choice input')
    fixed some cases where kconfig would select the wrong option from a
    choice with a single valid option and thus enter an infinite loop.

    However, this broke the test for user input of the form 'N?', because
    when kconfig selects the single valid option the input is zero-length
    and the test will read the byte before the input buffer. If this
    happens to contain '?' (as it will in a mips build on Debian unstable
    today) then kconfig again enters an infinite loop.

    Signed-off-by: Ben Hutchings
    Cc: stable@kernel.org [2.6.17+]
    Signed-off-by: Linus Torvalds

    Ben Hutchings
     
  • The dentry hashing rules have been really quite complicated for a long
    while, in odd ways. That made functions like __d_drop() very fragile
    and non-obvious.

    In particular, whether a dentry was hashed or not was indicated with an
    explicit DCACHE_UNHASHED bit. That's despite the fact that the hash
    abstraction that the dentries use actually have a 'is this entry hashed
    or not' model (which is a simple test of the 'pprev' pointer).

    The reason that was done is because we used the normal 'is this entry
    unhashed' model to mark whether the dentry had _ever_ been hashed in the
    dentry hash tables, and that logic goes back many years (commit
    b3423415fbc2: "dcache: avoid RCU for never-hashed dentries").

    That, in turn, meant that __d_drop had totally different unhashing logic
    for the dentry hash table case and for the anonymous dcache case,
    because in order to use the "is this dentry hashed" logic as a flag for
    whether it had ever been on the RCU hash table, we had to unhash such a
    dentry differently so that we'd never think that it wasn't 'unhashed'
    and wouldn't be free'd correctly.

    That's just insane. It made the logic really hard to follow, when there
    were two different kinds of "unhashed" states, and one of them (the one
    that used "list_bl_unhashed()") really had nothing at all to do with
    being unhashed per se, but with a very subtle lifetime rule instead.

    So turn all of it around, and make it logical.

    Instead of having a DENTRY_UNHASHED bit in d_flags to indicate whether
    the dentry is on the hash chains or not, use the hash chain unhashed
    logic for that. Suddenly "d_unhashed()" just uses "list_bl_unhashed()",
    and everything makes sense.

    And for the lifetime rule, just use an explicit DENTRY_RCUACCEES bit.
    If we ever insert the dentry into the dentry hash table so that it is
    visible to RCU lookup, we mark it DENTRY_RCUACCESS to show that it now
    needs the RCU lifetime rules. Now suddently that test at dentry free
    time makes sense too.

    And because unhashing now is sane and doesn't depend on where the dentry
    got unhashed from (because the dentry hash chain details doesn't have
    some subtle side effects), we can re-unify the __d_drop() logic and use
    common code for the unhashing.

    Also fix one more open-coded hash chain bit_spin_lock() that I missed in
    the previous chain locking cleanup commit.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
    PM: Add missing syscore_suspend() and syscore_resume() calls
    PM: Fix error code paths executed after failing syscore_suspend()

    Linus Torvalds
     
  • It's a useless abstraction for 'hlist_bl_head', and it doesn't actually
    help anything - quite the reverse. All the users end up having to know
    about the hlist_bl_head details anyway, using 'struct hlist_bl_node *'
    etc. So it just makes the code look confusing.

    And the cost of it is extra '&b->head' syntactic noise, but more
    importantly it spuriously makes the hash table dentry list look
    different from the per-superblock DCACHE_DISCONNECTED dentry list.

    As a result, the code ended up using ad-hoc locking for one case and
    special helper functions for what is really another totally identical
    case in the very same function.

    Make it all look and work the same.

    Signed-off-by: Linus Torvalds

    Linus Torvalds