30 Jun, 2010

6 commits

  • Fix a lockdep-splat-causing regression introduced by commit 989a2979205d
    ("fasync: RCU and fine grained locking").

    kill_fasync() can be called from both process and hard-irq context, so
    fa_lock must be taken with IRQs disabled.

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

    Reported-by: Sergey Senozhatsky
    Reported-by: Dominik Brodowski
    Tested-by: Dominik Brodowski
    Cc: Maciej Rutecki
    Acked-by: Eric Dumazet
    Cc: Paul E. McKenney
    Cc: Lai Jiangshan
    Cc: "David S. Miller"
    Acked-by: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • A call to sysv_write_inode() in sysv_new_inode() to its new interface that
    replaced wait flag with writeback structure. This was broken by
    a9185b41a4f84971b930c519f0c63bd450c4810d ("pass writeback_control to
    ->write_inode").

    Signed-off-by: Lubomir Rintel
    Cc: Christoph Hellwig
    Cc: Al Viro
    Cc: [2.6.34.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lubomir Rintel
     
  • The recent commit 1f0ce8b3dd667dca7 ("mm: Move ARCH_SLAB_MINALIGN and
    ARCH_KMALLOC_MINALIGN to ") which moved the
    ARCH_SLAB_MINALIGN default into the global header inadvertently broke FLAT
    for a bunch of systems. Blackfin systems now fail on any FLAT exec with:
    Unable to read code+data+bss, errno 14 When your /init is a FLAT binary,
    obviously this can be annoying ;).

    This stems from the alignment usage in the FLAT loader. The behavior
    before was that FLAT would default to ARCH_SLAB_MINALIGN only if it was
    defined, and this was only defined by arches when they wanted a larger
    alignment value. Otherwise it'd default to pointer alignment. Arguably,
    this is kind of hokey that the FLAT is semi-abusing defines it shouldn't.

    So let's merge the two alignment requirements so the floor is never 0.

    Signed-off-by: Mike Frysinger
    Cc: David McCullough
    Cc: Greg Ungerer
    Cc: Paul Mundt
    Cc: Michal Simek
    Cc: Hirokazu Takata
    Cc: Geert Uytterhoeven
    Cc: David Howells
    Cc: David Woodhouse
    Cc: Pekka Enberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     
  • Add support to the NOMMU /proc/pid/maps file to show which mapping is the stack
    of the original thread after execve. This is largely based on the MMU code.
    Subsidiary thread stacks are not indicated.

    For FDPIC, we now get:

    root:/> cat /proc/self/maps
    02064000-02067ccc rw-p 0004d000 00:01 22 /bin/busybox
    0206e000-0206f35c rw-p 00006000 00:01 295 /lib/ld-uClibc.so.0
    025f0000-025f6f0c r-xs 00000000 00:01 295 /lib/ld-uClibc.so.0
    02680000-026ba6b0 r-xs 00000000 00:01 297 /lib/libc.so.0
    02700000-0274d384 r-xs 00000000 00:01 22 /bin/busybox
    02816000-02817000 rw-p 00000000 00:00 0
    02848000-0284c0d8 rw-p 00000000 00:00 0
    02860000-02880000 rw-p 00000000 00:00 0 [stack]

    The semi-downside here is that for FLAT, we get:

    root:/> cat /proc/155/maps
    029f0000-029f9000 rwxp 00000000 00:00 0 [stack]

    The reason being that FLAT combines a whole lot of stuff into one map
    (including the stack). But this isn't any worse than the current output
    (which is nothing), so screw it.

    Signed-off-by: Mike Frysinger
    Signed-off-by: David Howells
    Cc: Greg Ungerer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     
  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
    block: Don't count_vm_events for discard bio in submit_bio.
    cfq: fix recursive call in cfq_blkiocg_update_completion_stats()
    cfq-iosched: Fixed boot warning with BLK_CGROUP=y and CFQ_GROUP_IOSCHED=n
    cfq: Don't allow queue merges for queues that have no process references
    block: fix DISCARD_BARRIER requests
    cciss: set SCSI max cmd len to 16, as default is wrong
    cpqarray: fix two more wrong section type
    cpqarray: fix wrong __init type on pci probe function
    drbd: Fixed a race between disk-attach and unexpected state changes
    writeback: fix pin_sb_for_writeback
    writeback: add missing requeue_io in writeback_inodes_wb
    writeback: simplify and split bdi_start_writeback
    writeback: simplify wakeup_flusher_threads
    writeback: fix writeback_inodes_wb from writeback_inodes_sb
    writeback: enforce s_umount locking in writeback_inodes_sb
    writeback: queue work on stack in writeback_inodes_sb
    writeback: fix writeback completion notifications

    Linus Torvalds
     
  • list_for_each_entry_safe is not suitable to protect against concurrent
    modification of the list. 6754af6 introduced a race in sb walking.

    list_for_each_entry can use the trick of pinning the current entry in
    the list before we drop and retake the lock because it subsequently
    follows cur->next. However list_for_each_entry_safe saves n=cur->next
    for following before entering the loop body, so when the lock is
    dropped, n may be deleted.

    Signed-off-by: Nick Piggin
    Cc: Christoph Hellwig
    Cc: John Stultz
    Cc: Frank Mayhar
    Cc: Al Viro
    Signed-off-by: Linus Torvalds

    npiggin@suse.de
     

28 Jun, 2010

2 commits


27 Jun, 2010

2 commits


25 Jun, 2010

2 commits


23 Jun, 2010

4 commits


17 Jun, 2010

6 commits

  • This bug appears to be the result of a cut-and-paste mistake from the
    NTLMv1 code. The function to generate the MAC key was commented out, but
    not the conditional above it. The conditional then ended up causing the
    session setup key not to be copied to the buffer unless this was the
    first session on the socket, and that made all but the first NTLMv2
    session setup fail.

    Fix this by removing the conditional and all of the commented clutter
    that made it difficult to see.

    Cc: Stable
    Reported-by: Gunther Deschner
    Signed-off-by: Jeff Layton

    Jeff Layton
     
  • It's currently possible for cifs_open to fail after it has already
    called cifs_new_fileinfo. In that situation, the new fileinfo will be
    leaked as the caller doesn't call fput. That in turn leads to a busy
    inodes after umount problem since the fileinfo holds an extra inode
    reference now. Shuffle cifs_open around a bit so that it only calls
    cifs_new_fileinfo if it's going to succeed.

    Signed-off-by: Jeff Layton
    Reviewed-and-Tested-by: Suresh Jayaraman

    Jeff Layton
     
  • ...and ensure that we propagate the error back to avoid any surprises.

    Signed-off-by: Suresh Jayaraman
    Reviewed-and-Tested-by: Jeff Layton

    Suresh Jayaraman
     
  • ...which takes a ton of unneeded arguments and does a lot more pointer
    dereferencing than is really needed.

    Signed-off-by: Jeff Layton
    Reviewed-and-Tested-by: Suresh Jayaraman

    Jeff Layton
     
  • The current scheme of sticking open files on a list and assuming that
    cifs_open will scoop them off of it is broken and leads to "Busy
    inodes after umount..." errors at unmount time.

    The problem is that there is no guarantee that cifs_open will always
    be called after a ->lookup or ->create operation. If there are
    permissions or other problems, then it's quite likely that it *won't*
    be called.

    Fix this by fully instantiating the filp whenever the file is created
    and pass that filp back to the VFS. If there is a problem, the VFS
    can clean up the references.

    Signed-off-by: Jeff Layton
    Reviewed-and-Tested-by: Suresh Jayaraman

    Jeff Layton
     
  • Having cifs_posix_open call cifs_new_fileinfo is problematic and
    inconsistent with how "regular" opens work. It's also buggy as
    cifs_reopen_file calls this function on a reconnect, which creates a new
    struct cifsFileInfo that just gets leaked.

    Push it out into the callers. This also allows us to get rid of the
    "mnt" arg to cifs_posix_open.

    Finally, in the event that a cifsFileInfo isn't or can't be created, we
    always want to close the filehandle out on the server as the client
    won't have a record of the filehandle and can't actually use it. Make
    sure that CIFSSMBClose is called in those cases.

    Signed-off-by: Jeff Layton
    Reviewed-and-Tested-by: Suresh Jayaraman

    Jeff Layton
     

16 Jun, 2010

1 commit


14 Jun, 2010

2 commits


12 Jun, 2010

15 commits

  • The standard behavior for drop_inode is to delete the inode when the
    last reference to it is put and the nlink count goes to 0. This helps
    keep inodes that are still considered "not deleted" in cache as long as
    possible even when there aren't dentries attached to them.

    When server inode numbers are disabled, it's not possible for cifs_iget
    to ever match an existing inode (since inode numbers are generated via
    iunique). In this situation, cifs can keep a lot of inodes in cache that
    will never be used again.

    Implement a drop_inode routine that deletes the inode if server inode
    numbers are disabled on the mount. This helps keep the cifs inode
    caches down to a more manageable size when server inode numbers are
    disabled.

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

    Jeff Layton
     
  • Busy-file renames don't actually work across directories, so we need
    to limit this code to renames within the same dir.

    This fixes the bug detailed here:

    https://bugzilla.redhat.com/show_bug.cgi?id=591938

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

    Jeff Layton
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
    Btrfs: The file argument for fsync() is never null
    Btrfs: handle ERR_PTR from posix_acl_from_xattr()
    Btrfs: avoid BUG when dropping root and reference in same transaction
    Btrfs: prohibit a operation of changing acl's mask when noacl mount option used
    Btrfs: should add a permission check for setfacl
    Btrfs: btrfs_lookup_dir_item() can return ERR_PTR
    Btrfs: btrfs_read_fs_root_no_name() returns ERR_PTRs
    Btrfs: unwind after btrfs_start_transaction() errors
    Btrfs: btrfs_iget() returns ERR_PTR
    Btrfs: handle kzalloc() failure in open_ctree()
    Btrfs: handle error returns from btrfs_lookup_dir_item()
    Btrfs: Fix BUG_ON for fs converted from extN
    Btrfs: Fix null dereference in relocation.c
    Btrfs: fix remap_file_pages error
    Btrfs: uninitialized data is check_path_shared()
    Btrfs: fix fallocate regression
    Btrfs: fix loop device on top of btrfs

    Linus Torvalds
     
  • The "file" argument for fsync is never null so we can remove this check.

    What drew my attention here is that 7ea8085910e: "drop unused dentry
    argument to ->fsync" introduced an unconditional dereference at the
    start of the function and that generated a smatch warning.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • posix_acl_from_xattr() returns both ERR_PTRs and null, but it's OK to
    pass null values to set_cached_acl()

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • If btrfs_ioctl_snap_destroy() deletes a snapshot but finishes
    with end_transaction(), the cleaner kthread may come in and
    drop the root in the same transaction. If that's the case, the
    root's refs still == 1 in the tree when btrfs_del_root() deletes
    the item, because commit_fs_roots() hasn't updated it yet (that
    happens during the commit).

    This wasn't a problem before only because
    btrfs_ioctl_snap_destroy() would commit the transaction before dropping
    the dentry reference, so the dead root wouldn't get queued up until
    after the fs root item was updated in the btree.

    Since it is not an error to drop the root reference and the root in the
    same transaction, just drop the BUG_ON() in btrfs_del_root().

    Signed-off-by: Sage Weil
    Signed-off-by: Chris Mason

    Sage Weil
     
  • when used Posix File System Test Suite(pjd-fstest) to test btrfs,
    some cases about setfacl failed when noacl mount option used.
    I simplified used commands in pjd-fstest, and the following steps
    can reproduce it.
    ------------------------
    # cd btrfs-part/
    # mkdir aaa
    # setfacl -m m::rw aaa
    Signed-off-by: Chris Mason

    Shi Weihua
     
  • On btrfs, do the following
    ------------------
    # su user1
    # cd btrfs-part/
    # touch aaa
    # getfacl aaa
    # file: aaa
    # owner: user1
    # group: user1
    user::rw-
    group::rw-
    other::r--
    # su user2
    # cd btrfs-part/
    # setfacl -m u::rwx aaa
    # getfacl aaa
    # file: aaa
    # owner: user1
    # group: user1
    user::rwx
    Signed-off-by: Chris Mason

    Shi Weihua
     
  • btrfs_lookup_dir_item() can return either ERR_PTRs or null.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • btrfs_read_fs_root_no_name() returns ERR_PTRs on error so I added a
    check for that. It's not clear to me if it can also return NULL
    pointers or not so I left the original NULL pointer check as is.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • This was added by a22285a6a3: "Btrfs: Integrate metadata reservation
    with start_transaction". If we goto out here then we skip all the
    unwinding and there are locks still held etc.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • btrfs_iget() returns an ERR_PTR() on failure and not null.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • Unwind and return -ENOMEM if the allocation fails here.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • If btrfs_lookup_dir_item() fails, we should can just let the mount fail
    with an error.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Chris Mason

    Dan Carpenter
     
  • Tree blocks can live in data block groups in FS converted from extN.
    So it's easy to trigger the BUG_ON.

    Signed-off-by: Yan Zheng
    Signed-off-by: Chris Mason

    Yan, Zheng