09 Nov, 2005

12 commits

  • The frame buffer layer already had some code dealing with compat ioctls, this
    patch moves over the remaining code from fs/compat_ioctl.c

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     
  • We don't implement these ioctls, but some architectures define them in the
    headers. Bash picks them up and issues them frequently. Add compat_ioctl
    handlers to silence warnings about unhandled copat ioctls.

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

    Christoph Hellwig
     
  • ->permission and ->lookup have a struct nameidata * argument these days to
    pass down lookup intents. Unfortunately some callers of lookup_hash don't
    actually pass this one down. For lookup_one_len() we don't have a struct
    nameidata to pass down, but as this function is a library function only
    used by filesystem code this is an acceptable limitation. All other
    callers should pass down the nameidata, so this patch changes the
    lookup_hash interface to only take a struct nameidata argument and derives
    the other two arguments to __lookup_hash from it. All callers already have
    the nameidata argument available so this is not a problem.

    At the same time I'd like to deprecate the lookup_hash interface as there
    are better exported interfaces for filesystem usage. Before it can
    actually be removed I need to fix up rpc_pipefs.

    Signed-off-by: Christoph Hellwig
    Cc: Ram Pai
    Cc: Jeff Mahoney
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • A few more callers of permission() just want to check for a different access
    pattern on an already open file. This patch adds a wrapper for permission()
    that takes a file in preparation of per-mount read-only support and to clean
    up the callers a little. The helper is not intended for new code, everything
    without the interface set in stone should use vfs_permission()

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

    Christoph Hellwig
     
  • Most permission() calls have a struct nameidata * available. This helper
    takes that as an argument and thus makes sure we pass it down for lookup
    intents and prepares for per-mount read-only support where we need a struct
    vfsmount for checking whether a file is writeable.

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

    Christoph Hellwig
     
  • This patch removes an ancient changelog file.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • The CONFIG_EXT{2,3}_CHECK options where were never available, and all they
    did was to implement a subset of e2fsck in the kernel.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • Make reiserfs correctly return EDQUOT when the allocation failed due to
    quotas (so far we just returned ENOSPC).

    Signed-off-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Pass down the silent flag to parse_options(). Without this fat gives
    warnings when mounting some non-fat rootfs with options.

    Signed-off-by: Christoph Hellwig
    Acked-by: OGAWA Hirofumi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Remove mtime update in hpfs_file_write, it's done in generic_file_write
    already.

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

    Christoph Hellwig
     
  • This patch removes almost all inclusions of linux/version.h. The 3
    #defines are unused in most of the touched files.

    A few drivers use the simple KERNEL_VERSION(a,b,c) macro, which is
    unfortunatly in linux/version.h.

    There are also lots of #ifdef for long obsolete kernels, this was not
    touched. In a few places, the linux/version.h include was move to where
    the LINUX_VERSION_CODE was used.

    quilt vi `find * -type f -name "*.[ch]"|xargs grep -El '(UTS_RELEASE|LINUX_VERSION_CODE|KERNEL_VERSION|linux/version.h)'|grep -Ev '(/(boot|coda|drm)/|~$)'`

    search pattern:
    /UTS_RELEASE\|LINUX_VERSION_CODE\|KERNEL_VERSION\|linux\/\(utsname\|version\).h

    Signed-off-by: Olaf Hering
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Olaf Hering
     
  • When non-leader thread does exec, de_thread calls release_task(leader) before
    calling exit_itimers(). If local timer interrupt happens in between, it can
    oops in send_group_sigqueue() while taking ->sighand->siglock == NULL.

    However, we can't change send_group_sigqueue() to check p->signal != NULL,
    because sys_timer_create() does get_task_struct() only in SIGEV_THREAD_ID
    case. So it is possible that this task_struct was already freed and we can't
    trust p->signal.

    This patch changes de_thread() so that leader released after exit_itimers()
    call.

    Signed-off-by: Oleg Nesterov
    Acked-by: Chris Wright
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     

08 Nov, 2005

20 commits

  • Linus Torvalds
     
  • An unbindable mount does not forward or receive propagation. Also
    unbindable mount disallows bind mounts. The semantics is as follows.

    Bind semantics:
    It is invalid to bind mount an unbindable mount.

    Move semantics:
    It is invalid to move an unbindable mount under shared mount.

    Clone-namespace semantics:
    If a mount is unbindable in the parent namespace, the corresponding
    cloned mount in the child namespace becomes unbindable too. Note:
    there is subtle difference, unbindable mounts cannot be bind mounted
    but can be cloned during clone-namespace.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • This makes bind, rbind, move, clone namespace and umount operations
    aware of the semantics of slave mount (see Documentation/sharedsubtree.txt
    in the last patch of the series for detailed description).

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • A slave mount always has a master mount from which it receives
    mount/umount events. Unlike shared mount the event propagation does not
    flow from the slave mount to the master.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • An unmount of a mount creates a umount event on the parent. If the
    parent is a shared mount, it gets propagated to all mounts in the peer
    group.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • Implement handling of mount --move in presense of shared mounts (see
    Documentation/sharedsubtree.txt in the end of patch series for detailed
    description).

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • Implement handling of MS_BIND in presense of shared mounts (see
    Documentation/sharedsubtree.txt in the end of patch series for detailed
    description).

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • This creates shared mounts. A shared mount when bind-mounted to some
    mountpoint, propagates mount/umount events to each other. All the
    shared mounts that propagate events to each other belong to the same
    peer-group.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • A private mount does not forward or receive propagation. This patch
    provides user the ability to convert any mount to private.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • This removes the per-namespace semaphore in favor of a global semaphore.
    This can have an effect on namespace scalability.

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • - clean up the ugliness in may_umount_tree()

    - fix a bug in do_loopback(). after cloning a tree, do_loopback()
    unlinks only the topmost mount of the cloned tree, leaving behind the
    children mounts on their corresponding expiry list.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • umount is done under the protection of the namespace semaphore. This
    can lead to intresting deadlocks when the last reference to a mount is
    released, if filesystem code is in sufficiently nasty state.

    This collects all the to-be-released-mounts and releases them after
    releasing the namespace semaphore. That both reduces the time we are
    holding namespace semaphore and gets the things more robust.

    Idea proposed by Al Viro.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • Old semantics: graft_tree() grabs a reference on the vfsmount before
    returning success.

    New one: graft_tree() leaves that to caller.

    All the callers of graft_tree() immediately dropped that reference
    anyway. Changing the interface takes care of this unnecessary overhead.

    Idea proposed by Al Viro.

    Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • Signed-off-by: Ram Pai
    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Ram Pai
     
  • Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Allow caller of seq_open() to kmalloc() seq_file + whatever else they
    want and set ->private_data to it. seq_open() will then abstain from
    doing allocation itself.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • - check_mnt() on the source of binding should've been unconditional
    from the very beginning. My fault - as far I could've trace it,
    that's an old thinko made back in 2001. Kudos to Miklos for spotting
    it...

    Fixed.

    - code cleaned up.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • The way we currently deal with quota and process accounting that might
    keep vfsmount busy at umount time is inherently broken; we try to turn
    them off just in case (not quite correctly, at that) and

    a) pray umount doesn't fail (otherwise they'll stay turned off)
    b) pray nobody doesn anything funny just as we turn quota off

    Moreover, LSM provides hooks for doing the same sort of broken logics.

    The proper way to deal with that is to introduce the second kind of
    reference to vfsmount. Semantics:

    - when the last normal reference is dropped, all special ones are
    converted to normal ones and if there had been any, cleanup is done.
    - normal reference can be cloned into a special one
    - special reference can be converted to normal one; that's a no-op if
    we'd already passed the point of no return (i.e. mntput() had
    converted special references to normal and started cleanup).

    The way it works: e.g. starting process accounting converts the vfsmount
    reference pinned by the opened file into special one and turns it back
    to normal when it gets shut down; acct_auto_close() is done when no
    normal references are left. That way it does *not* obstruct umount(2)
    and it silently gets turned off when the last normal reference to
    vfsmount is gone. Which is exactly what we want...

    The same should be done by LSM module that holds some internal
    references to vfsmount and wants to shut them down on umount - it should
    make them special and security_sb_umount_close() will be called exactly
    when the last normal reference to vfsmount is gone.

    quota handling is even simpler - we don't use normal file IO anymore, so
    there's no need to hold vfsmounts at all. DQUOT_OFF() is done from
    deactivate_super(), where it really belongs.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • This patch adds the ability to the SMU driver to recover missing
    calibration partitions from the SMU chip itself. It also adds some
    dynamic mecanism to /proc/device-tree so that new properties are visible
    to userland.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • Some manual fixups for clashing kfree() cleanups etc.

    Linus Torvalds
     

07 Nov, 2005

8 commits

  • There's no modular usage in the kernel and modules shouldn't use this
    symbol.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This is the fs/ part of the big kfree cleanup patch.

    Remove pointless checks for NULL prior to calling kfree() in fs/.

    Signed-off-by: Jesper Juhl
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jesper Juhl
     
  • Convert to proper kernel-doc format.

    Some have extra blank lines (not allowed immed. after the function name)
    or need blank lines (after all parameters). Function summary must be only
    one line.

    Colon (":") in a function description does weird things (causes kernel-doc
    to think that it's a new section head sadly).

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • Add structure fields kernel-doc for 2 fields in struct journal_s.

    Warning(/var/linsrc/linux-2614-rc4//include/linux/jbd.h:808): No description found for parameter 'j_wbuf'
    Warning(/var/linsrc/linux-2614-rc4//include/linux/jbd.h:808): No description found for parameter 'j_wbufsize'

    Convert fs/jbd/recovery.c non-static functions to kernel-doc format.

    fs/jbd/recovery.c doesn't export any symbols, so it should use
    !I instead of !E to eliminate this warning message:

    Warning(/var/linsrc/linux-2614-rc4//fs/jbd/recovery.c): no structured comments found

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • If an RPC socket is serving multiple programs, then the pg_authenticate of
    the first program in the list is called, instead of pg_authenticate for the
    program to be run.

    This does not cause a problem with any programs in the current kernel, but
    could confuse future code.

    Also set pg_authenticate for nfsd_acl_program incase it ever gets used.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • There are a couple of tests which could possibly be confused by extremely
    large numbers appearing in 'xdr' packets. I think the closest to an exploit
    you could get would be writing random data from a free page into a file - i.e.
    leak data out of kernel space.

    I'm fairly sure they cannot be used for remote compromise.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Provide a file in the NFSD filesystem that allows setting and querying of
    which version of NFS are being exported. Changes are only allowed while no
    server is running.

    Signed-off-by: Steve Dickson
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Most files in the nfsd filesystems are transaction files. You write a
    request, and read a response.

    For some (e.g. 'threads') it makes sense to just be able to read and get the
    current value.

    This functionality did exist but was broken recently when someone modified
    nfsctl.c without going through the maintainer. This patch fixes the
    regression.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown