02 Oct, 2006

40 commits

  • Userspace should create and bind a socket (but not connectted) and write the
    'fd' to portlist. This will cause the nfs server to listen on that socket.

    To close a socket, the name of the socket - as read from 'portlist' can be
    written to 'portlist' with a preceding '-'.

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

    NeilBrown
     
  • This file will list all ports that nfsd has open.
    Default when TCP enabled will be
    ipv4 udp 0.0.0.0 2049
    ipv4 tcp 0.0.0.0 2049

    Later, the list of ports will be settable.

    'portlist' chosen rather than 'ports', to avoid unnecessary confusion with
    non-mainline patches which created 'ports' with different semantics.

    [akpm@osdl.org: cleanups, build fix]
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Separate out the code for creating a new service, and for creating initial
    sockets.

    Some of these new functions will have multiple callers soon.

    [akpm@osdl.org: cleanups]
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • We have an array 'nfsd_version' which lists the available versions of nfsd,
    and 'nfsd_versions' (poor choice there :-() which lists the currently active
    versions.

    Then we have a bitmap - nfsd_versbits which says which versions are wanted.
    The bits in this bitset cause content to be copied from nfsd_version to
    nfsd_versions when nfsd starts.

    This patch removes nfsd_versbits and moves information directly from
    nfsd_version to nfsd_versions when requests for version changes arrive.

    Note that this doesn't make it possible to change versions while the server is
    running. This is because serv->sv_xdrsize is calculated when a service is
    created, and used when threads are created, and xdrsize depends on the active
    versions.

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

    NeilBrown
     
  • Currently lockd listens on UDP always, and TCP if CONFIG_NFSD_TCP is set.

    However as lockd performs services of the client as well, this is a problem.
    If CONFIG_NfSD_TCP is not set, and a tcp mount is used, the server will not be
    able to call back to lockd.

    So:
    - add an option to lockd_up saying which protocol is needed
    - Always open sockets for which an explicit port was given, otherwise
    only open a socket of the type required
    - Change nfsd to do one lockd_up per socket rather than one per thread.

    This
    - removes the dependancy on CONFIG_NFSD_TCP
    - means that lockd may open sockets other than at startup
    - means that lockd will *not* listen on UDP if the only
    mounts are TCP mount (and nfsd hasn't started).

    The latter is the only one that concerns me at all - I don't know if this
    might be a problem with some servers.

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

    NeilBrown
     
  • nfsd has some cleanup that it wants to do when the last thread exits, and
    there will shortly be some more. So collect this all into one place and
    define a callback for an rpc service to call when the service is about to be
    destroyed.

    [akpm@osdl.org: cleanups, build fix]
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Signed-off-by: Greg Banks
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Banks
     
  • Signed-off-by: Greg Banks
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Banks
     
  • Signed-off-by: Greg Banks
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Banks
     
  • cpumask: ensure that node_to_cpumask() is available to modules for all
    supported combinations of architecture and CONFIG_NUMA.

    Signed-off-by: Greg Banks
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Banks
     
  • cpumask: ensure that the cpu_online_map and cpu_possible_map bitmasks, and
    hence all the macros in that require them, are available to
    modules for all supported combinations of architecture and CONFIG_SMP.

    Signed-off-by: Greg Banks
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Banks
     
  • cpumask: add highest_possible_node_id(), analogous to
    highest_possible_processor_id().

    [pj@sgi.com: fix typo]
    Signed-off-by: Greg Banks
    Signed-off-by: Paul Jackson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Banks
     
  • As reported in http://bugzilla.kernel.org/show_bug.cgi?id=6970, ISDN can issue
    excessively-long udelays, which triggers a build-time error on ARM.

    This is very sucky of ISDN, but I doubt if anyone is going to suddenly fix it.
    So change the macro to do the microsecond counting itself.

    Cc:
    Cc: Karsten Keil
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • This patch to the Siemens Gigaset driver fixes the compile warning
    "ignoring return value of 'class_device_create_file', declared with
    attribute warn_unused_result" appearing with CONFIG_ENABLE_MUST_CHECK=y in
    release 2.6.18-rc1-mm1.

    Signed-off-by: Tilman Schmidt
    Acked-by: Hansjoerg Lipp
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tilman Schmidt
     
  • A simple module to test Linux Kernel Dump mechanism. This module uses
    jprobes to install/activate pre-defined crash points. At different crash
    points, various types of crashing scenarios are created like a BUG(),
    panic(), exception, recursive loop and stack overflow. The user can
    activate a crash point with specific type by providing parameters at the
    time of module insertion. Please see the file header for usage
    information. The module is based on the Linux Kernel Dump Test Tool by
    Fernando .

    This module could be merged with mainline. Jprobes is used here so that the
    context in which crash point is hit, could be maintained. This implements
    all the crash points as done by LKDTT except the one in the middle of
    tasklet_action().

    Signed-off-by: Ankita Garg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ankita Garg
     
  • kprobe_flush_task() possibly calls kfree function during holding
    kretprobe_lock spinlock, if kfree function is probed by kretprobe that will
    incur spinlock deadlock. This patch moves kfree function out scope of
    kretprobe_lock.

    Signed-off-by: bibo, mao
    Signed-off-by: Ananth N Mavinakayanahalli
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    bibo,mao
     
  • When kprobe is re-entered, the re-entered kprobe kernel path will will call
    atomic_notifier_call_chain function, if this function is kprobed that will
    incur numerous kprobe recursive fault. This patch disallows kprobes on
    atomic_notifier_call_chain function.

    Signed-off-by: bibo, mao
    Signed-off-by: Ananth N Mavinakayanahalli
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    bibo,mao
     
  • Whitespace is used to indent, this patch cleans up these sentences by
    kernel coding style.

    Signed-off-by: bibo, mao
    Signed-off-by: Ananth N Mavinakayanahalli
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    bibo,mao
     
  • Documentation/kprobes.txt updated to reflect:

    o In-kernel symbol resolution
    o CONFIG_KALLSYMS dependency
    o Usage of JPROBE_ENTRY
    o Addition of regs_return_value()

    Also update the references list and usage examples to use correct module
    interfaces.

    Signed-off-by: Ananth N Mavinakayanahalli
    Acked-by: Jim Keniston
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ananth N Mavinakayanahalli
     
  • Add the regs_return_value() macro to extract the return value in an
    architecture agnostic manner, given the pt_regs.

    Other architecture maintainers may want to add similar helpers.

    Signed-off-by: Ananth N Mavinakayanahalli
    Signed-off-by: Anil S Keshavamurthy
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ananth N Mavinakayanahalli
     
  • kallsyms_lookup_name() allows for style specification for
    looking up symbol addresses. Handle the case where the user specifies
    on powerpc, given that 64-bit powerpc uses function
    descriptors.

    Signed-off-by: Anil S Keshavamurthy
    Signed-off-by: Ananth N Mavinakayanahalli
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ananth N Mavinakayanahalli
     
  • In an effort to make kprobe modules more portable, here is a patch that:

    o Introduces the "symbol_name" field to struct kprobe.
    The symbol->address resolution now happens in the kernel in an
    architecture agnostic manner. 64-bit powerpc users no longer have
    to specify the ".symbols"
    o Introduces the "offset" field to struct kprobe to allow a user to
    specify an offset into a symbol.
    o The legacy mechanism of specifying the kprobe.addr is still supported.
    However, if both the kprobe.addr and kprobe.symbol_name are specified,
    probe registration fails with an -EINVAL.
    o The symbol resolution code uses kallsyms_lookup_name(). So
    CONFIG_KPROBES now depends on CONFIG_KALLSYMS
    o Apparantly kprobe modules were the only legitimate out-of-tree user of
    the kallsyms_lookup_name() EXPORT. Now that the symbol resolution
    happens in-kernel, remove the EXPORT as suggested by Christoph Hellwig
    o Modify tcp_probe.c that uses the kprobe interface so as to make it
    work on multiple platforms (in its earlier form, the code wouldn't
    work, say, on powerpc)

    Signed-off-by: Ananth N Mavinakayanahalli
    Signed-off-by: Prasanna S Panchamukhi
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ananth N Mavinakayanahalli
     
  • Replaces the pid_t value with a struct pid to avoid pid wrap around
    problems.

    Signed-off-by: Cedric Le Goater
    Cc: Martin Schwidefsky
    Acked-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Cedric Le Goater
     
  • The problem with remembering a user space process by its pid is that it is
    possible that the process will exit, pid wrap around will occur.
    Converting to a struct pid avoid that problem, and paves the way for
    implementing a pid namespace.

    Also since usb is the only user of kill_proc_info_as_uid rename
    kill_proc_info_as_uid to kill_pid_info_as_uid and have the new version take
    a struct pid.

    Signed-off-by: Eric W. Biederman
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • This has been needed for a long time, but now with the advent of a
    reference counted struct pid there are real consequences for getting this
    wrong.

    Someone I think it was Oleg Nesterov pointed out that this construct was
    missing locking, when I introduced struct pid. After taking time to review
    the locking construct already present I figured out which lock needs to be
    taken. The other paths that access f_owner.pid take either the f_owner
    read or the write lock.

    Signed-off-by: Eric W. Biederman
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Message queues can signal a process waiting for a message.

    This patch replaces the pid_t value with a struct pid to avoid pid wrap
    around problems.

    Signed-off-by: Cedric Le Goater
    Acked-by: Eric Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Cedric Le Goater
     
  • This updates my proc: readdir race fix (take 3) patch
    to account for the changes made by: Sukadev Bhattiprolu
    to introduce struct pspace.

    Signed-off-by: Eric W. Biederman
    Cc: KAMEZAWA Hiroyuki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Define a per-container pid space object. And create one instance of this
    object, init_pspace, to define the entire pid space. Subsequent patches
    will provide/use interfaces to create/destroy pid spaces.

    Its a subset/rework of Eric Biederman's patch
    http://lkml.org/lkml/2006/2/6/285 .

    Signed-off-by: Eric Biederman
    Signed-off-by: Sukadev Bhattiprolu
    Cc: Dave Hansen
    Cc: Serge Hallyn
    Cc: Cedric Le Goater
    Cc: Kirill Korotaev
    Cc: Andrey Savochkin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sukadev Bhattiprolu
     
  • Move struct pidmap and PIDMAP_ENTRIES to a new file, include/linux/pspace.h
    where it will be used in subsequent patches to define pid spaces.

    Its a subset of Eric Biederman's patch http://lkml.org/lkml/2006/2/6/285

    [akpm@osdl.org: cleanups]
    Signed-off-by: Eric W. Biederman
    Signed-off-by: Sukadev Bhattiprolu
    Cc: Dave Hansen
    Cc: Serge Hallyn
    Cc: Cedric Le Goater
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sukadev Bhattiprolu
     
  • I think it is hardly possible to read the current do_each_task_pid(). The
    new version is much simpler and makes the code smaller.

    Only the do_each_task_pid change is tested, the do_each_pid_task isn't.

    Signed-off-by: Oleg Nesterov
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • Use struct pidmap instead of pidmap_t.

    This updates my proc: readdir race fix (take 3) patch
    to account for the changes made by: Sukadev Bhattiprolu
    to kill pidmap_t.

    Signed-off-by: Eric W. Biederman
    Cc: KAMEZAWA Hiroyuki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Use struct pidmap instead of pidmap_t.

    Its a subset of Eric Biederman's patch http://lkml.org/lkml/2006/2/6/271.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Sukadev Bhattiprolu
    Cc: Dave Hansen
    Cc: Serge Hallyn
    Cc: Cedric Le Goater
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sukadev Bhattiprolu
     
  • As part of an SMP cleanliness pass over UML, I consted a bunch of
    structures in order to not have to document their locking. One of these
    structures was a struct tty_operations. In order to const it in UML
    without introducing compiler complaints, the declaration of
    tty_set_operations needs to be changed, and then all of its callers need to
    be fixed.

    This patch declares all struct tty_operations in the tree as const. In all
    cases, they are static and used only as input to tty_set_operations. As an
    extra check, I ran an i386 allyesconfig build which produced no extra
    warnings.

    53 drivers are affected. I checked the history of a bunch of them, and in
    most cases, there have been only a handful of maintenance changes in the
    last six months. serial_core.c was the busiest one that I looked at.

    Signed-off-by: Jeff Dike
    Acked-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Only touch inode's i_mtime and i_ctime to make them equal to "now" in case
    they aren't yet (don't just update timestamp unconditionally). Uninline
    the hash function to save 259 Bytes.

    This tiny inode change which may improve cache behaviour also shaves off 8
    Bytes from file_update_time() on i386.

    Included a tiny codestyle cleanup, too.

    Signed-off-by: Andreas Mohr
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andreas Mohr
     
  • Everybody passes valid pointer there.

    Signed-off-by: Alexey Dobriyan
    Acked-by: OGAWA Hirofumi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • File handles can be requested to send sigio and sigurg to processes. By
    tracking the destination processes using struct pid instead of pid_t we make
    the interface safe from all potential pid wrap around problems.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • I took a good hard look at the locking and it appears the locking on vt_pid
    is the console semaphore. Every modified path is called under the console
    semaphore except reset_vc when it is called from fn_SAK or do_SAK both of
    which appear to be in interrupt context. In addition I need to be careful
    because in the presence of an oops the console_sem may be arbitrarily
    dropped.

    Which leads me to conclude the current locking is inadequate for my needs.

    Given the weird cases we could hit because of oops printing instead of
    introducing an extra spin lock to protect the data and keep the pid to
    signal and the signal to send in sync, I have opted to use xchg on just the
    struct pid * pointer instead.

    Due to console_sem we will stay in sync between vt_pid and vt_mode except
    for a small window during a SAK, or oops handling. SAK handling should
    kill any user space process that care, and oops handling we are broken
    anyway. Besides the worst that can happen is that I try to send the wrong
    signal.

    Signed-off-by: Eric W. Biederman
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • This is such a rare path it took me a while to figure out how to test
    this after soring out the locking.

    This patch does several things.
    - The variables used are moved into a structure and declared in vt_kern.h
    - A spinlock is added so we don't have SMP races updating the values.
    - Instead of raw pid_t value a struct_pid is used to guard against
    pid wrap around issues, if the daemon to spawn a new console dies.

    Signed-off-by: Eric W. Biederman
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • As we stop storing pid_t's and move to storing struct pid *. We need a way to
    get the pid_t from the struct pid to report to user space what we have stored.

    Having a clean well defined way to do this is especially important as we move
    to multiple pid spaces as may need to report a different value to the caller
    depending on which pid space the caller is in.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • pids aren't something that drivers should care about. However there are a lot
    of helper layers in the kernel that do care, and are built as modules. Before
    I can convert them to using struct pid instead of pid_t I need to export the
    appropriate symbols so they can continue to be built.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman