07 Feb, 2008

3 commits


06 Feb, 2008

12 commits

  • The patch supports legacy (32-bit) capability userspace, and where possible
    translates 32-bit capabilities to/from userspace and the VFS to 64-bit
    kernel space capabilities. If a capability set cannot be compressed into
    32-bits for consumption by user space, the system call fails, with -ERANGE.

    FWIW libcap-2.00 supports this change (and earlier capability formats)

    http://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/

    [akpm@linux-foundation.org: coding-syle fixes]
    [akpm@linux-foundation.org: use get_task_comm()]
    [ezk@cs.sunysb.edu: build fix]
    [akpm@linux-foundation.org: do not initialise statics to 0 or NULL]
    [akpm@linux-foundation.org: unused var]
    [serue@us.ibm.com: export __cap_ symbols]
    Signed-off-by: Andrew G. Morgan
    Cc: Stephen Smalley
    Acked-by: Serge Hallyn
    Cc: Chris Wright
    Cc: James Morris
    Cc: Casey Schaufler
    Signed-off-by: Erez Zadok
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morgan
     
  • This patch fixes a sles9 system hang in start_this_handle from a customer
    with some heavy workload where all tasks are waiting on kjournald to commit
    the transaction, but kjournald waits on t_updates to go down to zero (it
    never does).

    This was reported as a lowmem shortage deadlock but when checking the debug
    data I noticed the VM wasn't under pressure at all (well it was really
    under vm pressure, because lots of tasks hanged in the VM prune_dcache
    methods trying to flush dirty inodes, but no task was hanging in GFP_NOFS
    mode, the holder of the journal handle should have if this was a vm issue
    in the first place).

    No task was apparently holding the leftover handle in the committing
    transaction, so I deduced t_updates was stuck to 1 because a journal_stop
    was never run by some path (this turned out to be correct). With a debug
    patch adding proper reverse links and stack trace logging in ext3 deployed
    in production, I found journal_stop is never run because
    mark_inode_dirty_sync is called inside release_task called by do_exit.
    (that was quite fun because I would have never thought about this
    subtleness, I thought a regular path in ext3 had a bug and it forgot to
    call journal_stop)

    do_exit->release_task->mark_inode_dirty_sync->schedule() (will never
    come back to run journal_stop)

    The reason is that shrink_dcache_parent is racy by design (feature not
    a bug) and it can do blocking I/O in some case, but the point is that
    calling shrink_dcache_parent at the last stage of do_exit isn't safe
    for self-reaping tasks.

    I guess the memory pressure of the unbalanced highmem system allowed
    to trigger this more easily.

    Now mainline doesn't have this line in iput (like sles9 has):

    if (inode->i_state & I_DIRTY_DELAYED)
    mark_inode_dirty_sync(inode);

    so it will probably not crash with ext3, but for example ext2 implements an
    I/O-blocking ext2_put_inode that will lead to similar screwups with
    ext2_free_blocks never coming back and it's definitely wrong to call
    blocking-IO paths inside do_exit. So this should fix a subtle bug in
    mainline too (not verified in practice though). The equivalent fix for
    ext3 is also not verified yet to fix the problem in sles9 but I don't have
    doubt it will (it usually takes days to crash, so it'll take weeks to be
    sure).

    An alternate fix would be to offload that work to a kernel thread, but I
    don't think a reschedule for this is worth it, the vm should be able to
    collect those entries for the synchronous release_task.

    Signed-off-by: Andrea Arcangeli
    Cc: Jan Kara
    Cc: Ingo Molnar
    Cc: "Eric W. Biederman"
    Cc: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrea Arcangeli
     
  • Make /proc/ page monitoring configurable

    This puts the following files under an embedded config option:

    /proc/pid/clear_refs
    /proc/pid/smaps
    /proc/pid/pagemap
    /proc/kpagecount
    /proc/kpageflags

    [akpm@linux-foundation.org: Kconfig fix]
    Signed-off-by: Matt Mackall
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • This makes a subset of physical page flags available to userspace. Together
    with /proc/pid/kpagemap, this allows tracking of a wide variety of VM behaviors.

    Exported flags are decoupled from the kernel's internal flags. This
    allows us to reorder flag bits, and synthesize any bits that get
    redefined in terms of other bits.

    [akpm@linux-foundation.org: remove unneeded access_ok()]
    [akpm@linux-foundation.org: s/0/NULL/]
    Signed-off-by: Matt Mackall
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • This makes physical page map counts available to userspace. Together
    with /proc/pid/pagemap and /proc/pid/clear_refs, this can be used to
    monitor memory usage on a per-page basis.

    [akpm@linux-foundation.org: remove unneeded access_ok()]
    [bunk@stusta.de: make struct proc_kpagemap static]
    Signed-off-by: Matt Mackall
    Cc: Jeremy Fitzhardinge
    Cc: David Rientjes
    Signed-off-by: Adrian Bunk
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • This interface provides a mapping for each page in an address space to its
    physical page frame number, allowing precise determination of what pages are
    mapped and what pages are shared between processes.

    New in this version:

    - headers gone again (as recommended by Dave Hansen and Alan Cox)
    - 64-bit entries (as per discussion with Andi Kleen)
    - swap pte information exported (from Dave Hansen)
    - page walker callback for holes (from Dave Hansen)
    - direct put_user I/O (as suggested by Rusty Russell)

    This patch folds in cleanups and swap PTE support from Dave Hansen
    .

    Signed-off-by: Matt Mackall
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • Reorder source so that all the code and data for each interface is together.

    Signed-off-by: Matt Mackall
    Cc: Jeremy Fitzhardinge
    Cc: David Rientjes
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • This puts all the clear_refs code where it belongs and probably lets things
    compile on MMU-less systems as well.

    Signed-off-by: Matt Mackall
    Cc: Jeremy Fitzhardinge
    Cc: David Rientjes
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • This pulls the shared map display code out of show_map and puts it in
    show_smap where it belongs.

    Signed-off-by: Matt Mackall
    Cc: Jeremy Fitzhardinge
    Acked-by: David Rientjes
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • Use the generic pagewalker for smaps and clear_refs

    Signed-off-by: Matt Mackall
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • The "proportional set size" (PSS) of a process is the count of pages it has
    in memory, where each page is divided by the number of processes sharing
    it. So if a process has 1000 pages all to itself, and 1000 shared with one
    other process, its PSS will be 1500.

    - lwn.net: "ELC: How much memory are applications really using?"

    The PSS proposed by Matt Mackall is a very nice metic for measuring an
    process's memory footprint. So collect and export it via
    /proc//smaps.

    Matt Mackall's pagemap/kpagemap and John Berthels's exmap can also do the
    job. They are comprehensive tools. But for PSS, let's do it in the simple
    way.

    Cc: John Berthels
    Cc: Bernardo Innocenti
    Cc: Padraig Brady
    Cc: Denys Vlasenko
    Cc: Balbir Singh
    Signed-off-by: Matt Mackall
    Signed-off-by: Fengguang Wu
    Cc: Hugh Dickins
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Fengguang Wu
     
  • Checking if an address is a vmalloc address is done in a couple of places.
    Define a common version in mm.h and replace the other checks.

    Again the include structures suck. The definition of VMALLOC_START and
    VMALLOC_END is not available in vmalloc.h since highmem.c cannot be included
    there.

    Signed-off-by: Christoph Lameter
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

02 Feb, 2008

1 commit


01 Feb, 2008

1 commit

  • * 'task_killable' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc: (22 commits)
    Remove commented-out code copied from NFS
    NFS: Switch from intr mount option to TASK_KILLABLE
    Add wait_for_completion_killable
    Add wait_event_killable
    Add schedule_timeout_killable
    Use mutex_lock_killable in vfs_readdir
    Add mutex_lock_killable
    Use lock_page_killable
    Add lock_page_killable
    Add fatal_signal_pending
    Add TASK_WAKEKILL
    exit: Use task_is_*
    signal: Use task_is_*
    sched: Use task_contributes_to_load, TASK_ALL and TASK_NORMAL
    ptrace: Use task_is_*
    power: Use task_is_*
    wait: Use TASK_NORMAL
    proc/base.c: Use task_is_*
    proc/array.c: Use TASK_REPORT
    perfmon: Use task_is_*
    ...

    Fixed up conflicts in NFS/sunrpc manually..

    Linus Torvalds
     

29 Jan, 2008

2 commits


26 Jan, 2008

1 commit


15 Jan, 2008

1 commit

  • Commit 84427eaef1fb91704c7112bdb598c810003b99f3 (remove task_ppid_nr_ns)
    moved the task_tgid_nr_ns(task->real_parent) outside of lock_task_sighand().
    This is wrong, ->real_parent could be freed/reused.

    Both ->parent/real_parent point to nothing after __exit_signal() because
    we remove the child from ->children list, and thus the child can't be
    reparented when its parent exits.

    rcu_read_lock() protects ->parent/real_parent, but _only_ if we know it was
    valid before we take rcu lock.

    Revert this part of the patch.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     

14 Jan, 2008

1 commit

  • task_ppid_nr_ns is called in three places. One of these should never
    have called it. In the other two, using it broke the existing
    semantics. This was presumably accidental. If the function had not
    been there, it would have been much more obvious to the eye that those
    patches were changing the behavior. We don't need this function.

    In task_state, the pid of the ptracer is not the ppid of the ptracer.

    In do_task_stat, ppid is the tgid of the real_parent, not its pid.
    I also moved the call outside of lock_task_sighand, since it doesn't
    need it.

    In sys_getppid, ppid is the tgid of the real_parent, not its pid.

    Signed-off-by: Roland McGrath
    Signed-off-by: Linus Torvalds

    Roland McGrath
     

03 Jan, 2008

3 commits

  • Contents of /proc/*/maps is sensitive and may become sensitive after
    open() (e.g. if target originally shares our ->mm and later does exec
    on suid-root binary).

    Check at read() (actually, ->start() of iterator) time that mm_struct
    we'd grabbed and locked is
    - still the ->mm of target
    - equal to reader's ->mm or the target is ptracable by reader.

    Signed-off-by: Al Viro
    Acked-by: Rik van Riel
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Both SLUB and SLAB really did almost exactly the same thing for
    /proc/slabinfo setup, using duplicate code and per-allocator #ifdef's.

    This just creates a common CONFIG_SLABINFO that is enabled by both SLUB
    and SLAB, and shares all the setup code. Maybe SLOB will want this some
    day too.

    Reviewed-by: Pekka Enberg
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • We need to register slabinfo to procfs when CONFIG_SLUB is enabled to
    make the file actually visible to user-space.

    Signed-off-by: Pekka Enberg
    Acked-by: Ingo Molnar
    Signed-off-by: Linus Torvalds

    Pekka Enberg
     

11 Dec, 2007

1 commit

  • Ultimately to implement /proc perfectly we need an implementation of
    d_revalidate because files and directories can be removed behind the back
    of the VFS, and d_revalidate is the only way we can let the VFS know that
    this has happened.

    Unfortunately the linux VFS can not cope with anything in the path to a
    mount point going away. So a proper d_revalidate method that calls d_drop
    also needs to call have_submounts which is moderately expensive, so you
    really don't want a d_revalidate method that unconditionally calls it, but
    instead only calls it when the backing object has really gone away.

    proc generic entries only disappear on module_unload (when not counting the
    fledgling network namespace) so it is quite rare that we actually encounter
    that case and has not actually caused us real world trouble yet.

    So until we get a proper test for keeping dentries in the dcache fix the
    current d_revalidate method by completely removing it. This returns us to
    the current status quo.

    So with CONFIG_NETNS=n things should look as they have always looked.

    For CONFIG_NETNS=y things work most of the time but there are a few rare
    corner cases that don't behave properly. As the network namespace is
    barely present in 2.6.24 this should not be a problem.

    Signed-off-by: Eric W. Biederman
    Cc: "Rafael J. Wysocki"
    Cc: Pavel Emelyanov
    Cc: "David S. Miller"
    Cc: Herbert Xu
    Cc: Alexey Dobriyan
    Cc: Trond Myklebust
    Cc: "Denis V. Lunev"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

07 Dec, 2007

2 commits


06 Dec, 2007

1 commit

  • Creating PDEs with refcount 0 and "deleted" flag has problems (see below).
    Switch to usual scheme:
    * PDE is created with refcount 1
    * every de_get does +1
    * every de_put() and remove_proc_entry() do -1
    * once refcount reaches 0, PDE is freed.

    This elegantly fixes at least two following races (both observed) without
    introducing new locks, without abusing old locks, without spreading
    lock_kernel():

    1) PDE leak

    remove_proc_entry de_put
    ----------------- ------
    [refcnt = 1]
    if (atomic_read(&de->count) == 0)
    if (atomic_dec_and_test(&de->count))
    if (de->deleted)
    /* also not taken! */
    free_proc_entry(de);
    else
    de->deleted = 1;
    [refcount=0, deleted=1]

    2) use after free

    remove_proc_entry de_put
    ----------------- ------
    [refcnt = 1]

    if (atomic_dec_and_test(&de->count))
    if (atomic_read(&de->count) == 0)
    free_proc_entry(de);
    /* boom! */
    if (de->deleted)
    free_proc_entry(de);

    BUG: unable to handle kernel paging request at virtual address 6b6b6b6b
    printing eip: c10acdda *pdpt = 00000000338f8001 *pde = 0000000000000000
    Oops: 0000 [#1] PREEMPT SMP
    Modules linked in: af_packet ipv6 cpufreq_ondemand loop serio_raw psmouse k8temp hwmon sr_mod cdrom
    Pid: 23161, comm: cat Not tainted (2.6.24-rc2-8c0863403f109a43d7000b4646da4818220d501f #4)
    EIP: 0060:[] EFLAGS: 00210097 CPU: 1
    EIP is at strnlen+0x6/0x18
    EAX: 6b6b6b6b EBX: 6b6b6b6b ECX: 6b6b6b6b EDX: fffffffe
    ESI: c128fa3b EDI: f380bf34 EBP: ffffffff ESP: f380be44
    DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    Process cat (pid: 23161, ti=f380b000 task=f38f2570 task.ti=f380b000)
    Stack: c10ac4f0 00000278 c12ce000 f43cd2a8 00000163 00000000 7da86067 00000400
    c128fa20 00896b18 f38325a8 c128fe20 ffffffff 00000000 c11f291e 00000400
    f75be300 c128fa20 f769c9a0 c10ac779 f380bf34 f7bfee70 c1018e6b f380bf34
    Call Trace:
    [] vsnprintf+0x2ad/0x49b
    [] vscnprintf+0x14/0x1f
    [] vprintk+0xc5/0x2f9
    [] handle_fasteoi_irq+0x0/0xab
    [] do_IRQ+0x9f/0xb7
    [] preempt_schedule_irq+0x3f/0x5b
    [] need_resched+0x1f/0x21
    [] printk+0x1b/0x1f
    [] de_put+0x3d/0x50
    [] proc_delete_inode+0x38/0x41
    [] proc_delete_inode+0x0/0x41
    [] generic_delete_inode+0x5e/0xc6
    [] iput+0x60/0x62
    [] d_kill+0x2d/0x46
    [] dput+0xdc/0xe4
    [] __fput+0xb0/0xcd
    [] filp_close+0x48/0x4f
    [] sys_close+0x67/0xa5
    [] sysenter_past_esp+0x5f/0x85
    =======================
    Code: c9 74 0c f2 ae 74 05 bf 01 00 00 00 4f 89 fa 5f 89 d0 c3 85 c9 57 89 c7 89 d0 74 05 f2 ae 75 01 4f 89 f8 5f c3 89 c1 89 c8 eb 06 38 00 74 07 40 4a 83 fa ff 75 f4 29 c8 c3 90 90 90 57 83 c9
    EIP: [] strnlen+0x6/0x18 SS:ESP 0068:f380be44

    Also, remove broken usage of ->deleted from reiserfs: if sget() succeeds,
    module is already pinned and remove_proc_entry() can't happen => nobody
    can mark PDE deleted.

    Dummy proc root in netns code is not marked with refcount 1. AFAICS, we
    never get it, it's just for proper /proc/net removal. I double checked
    CLONE_NETNS continues to work.

    Patch survives many hours of modprobe/rmmod/cat loops without new bugs
    which can be attributed to refcounting.

    Signed-off-by: Alexey Dobriyan
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

04 Dec, 2007

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/net-2.6: (27 commits)
    [INET]: Fix inet_diag dead-lock regression
    [NETNS]: Fix /proc/net breakage
    [TEXTSEARCH]: Do not allow zero length patterns in the textsearch infrastructure
    [NETFILTER]: fix forgotten module release in xt_CONNMARK and xt_CONNSECMARK
    [NETFILTER]: xt_TCPMSS: remove network triggerable WARN_ON
    [DECNET]: dn_nl_deladdr() almost always returns no error
    [IPV6]: Restore IPv6 when MTU is big enough
    [RXRPC]: Add missing select on CRYPTO
    mac80211: rate limit wep decrypt failed messages
    rfkill: fix double-mutex-locking
    mac80211: drop unencrypted frames if encryption is expected
    mac80211: Fix behavior of ieee80211_open and ieee80211_close
    ieee80211: fix unaligned access in ieee80211_copy_snap
    mac80211: free ifsta->extra_ie and clear IEEE80211_STA_PRIVACY_INVOKED
    SCTP: Fix build issues with SCTP AUTH.
    SCTP: Fix chunk acceptance when no authenticated chunks were listed.
    SCTP: Fix the supported extensions paramter
    SCTP: Fix SCTP-AUTH to correctly add HMACS paramter.
    SCTP: Fix the number of HB transmissions.
    [TCP] illinois: Incorrect beta usage
    ...

    Linus Torvalds
     

01 Dec, 2007

1 commit

  • Well I clearly goofed when I added the initial network namespace support
    for /proc/net. Currently things work but there are odd details visible to
    user space, even when we have a single network namespace.

    Since we do not cache proc_dir_entry dentries at the moment we can just
    modify ->lookup to return a different directory inode depending on the
    network namespace of the process looking at /proc/net, replacing the
    current technique of using a magic and fragile follow_link method.

    To accomplish that this patch:
    - introduces a shadow_proc method to allow different dentries to
    be returned from proc_lookup.
    - Removes the old /proc/net follow_link magic
    - Fixes a weakness in our not caching of proc generic dentries.

    As shadow_proc uses a task struct to decided which dentry to return we can
    go back later and fix the proc generic caching without modifying any code
    that uses the shadow_proc method.

    Signed-off-by: Eric W. Biederman
    Cc: "Rafael J. Wysocki"
    Cc: Pavel Machek
    Cc: Pavel Emelyanov
    Cc: "David S. Miller"
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Herbert Xu

    Eric W. Biederman
     

30 Nov, 2007

2 commits

  • Oleg noticed that the call of task_pid_nr_ns() in proc_pid_readdir
    is racy with respect to tasks exiting.

    After a bit of examination it also appears that the call itself
    is completely unnecessary.

    So to fix the problem this patch modifies next_tgid() to return
    both a tgid and the task struct in question.

    A structure is introduced to return these values because it is
    slightly cleaner and easier to optimize, and the resulting code
    is a little shorter.

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

    Eric W. Biederman
     
  • proc_kill_inodes() can clear ->i_fop in the middle of vfs_readdir resulting in
    NULL dereference during "file->f_op->readdir(file, buf, filler)".

    The solution is to remove proc_kill_inodes() completely:

    a) we don't have tricky modules implementing their tricky readdir hooks which
    could keeping this revoke from hell.

    b) In a situation when module is gone but PDE still alive, standard
    readdir will return only "." and "..", because pde->next was cleared by
    remove_proc_entry().

    c) the race proc_kill_inode() destined to prevent is not completely
    fixed, just race window made smaller, because vfs_readdir() is run
    without sb_lock held and without file_list_lock held. Effectively,
    ->i_fop is cleared at random moment, which can't fix properly anything.

    BUG: unable to handle kernel NULL pointer dereference at virtual address 00000018
    printing eip: c1061205 *pdpt = 0000000005b22001 *pde = 0000000000000000
    Oops: 0000 [#1] PREEMPT SMP
    Modules linked in: foo af_packet ipv6 cpufreq_ondemand loop serio_raw sr_mod k8temp cdrom hwmon amd_rng
    Pid: 2033, comm: find Not tainted (2.6.24-rc1-b1d08ac064268d0ae2281e98bf5e82627e0f0c56 #2)
    EIP: 0060:[] EFLAGS: 00010246 CPU: 0
    EIP is at vfs_readdir+0x47/0x74
    EAX: c6b6a780 EBX: 00000000 ECX: c1061040 EDX: c5decf94
    ESI: c6b6a780 EDI: fffffffe EBP: c9797c54 ESP: c5decf78
    DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    Process find (pid: 2033, ti=c5dec000 task=c64bba90 task.ti=c5dec000)
    Stack: c5decf94 c1061040 fffffff7 0805ffbc 00000000 c6b6a780 c1061295 0805ffbc
    00000000 00000400 00000000 00000004 0805ffbc 4588eff4 c5dec000 c10026ba
    00000004 0805ffbc 00000400 0805ffbc 4588eff4 bfdc6c70 000000dc 0000007b
    Call Trace:
    [] filldir64+0x0/0xc5
    [] sys_getdents64+0x63/0xa5
    [] sysenter_past_esp+0x5f/0x85
    =======================
    Code: 49 83 78 18 00 74 43 8d 6b 74 bf fe ff ff ff 89 e8 e8 b8 c0 12 00 f6 83 2c 01 00 00 10 75 22 8b 5e 10 8b 4c 24 04 89 f0 8b 14 24 53 18 f6 46 1a 04 89 c7 75 0b 8b 56 0c 8b 46 08 e8 c8 66 00
    EIP: [] vfs_readdir+0x47/0x74 SS:ESP 0068:c5decf78

    hch: "Nice, getting rid of this is a very good step formwards.
    Unfortunately we have another copy of this junk in
    security/selinux/selinuxfs.c:sel_remove_entries() which would need the
    same treatment."

    Signed-off-by: Alexey Dobriyan
    Acked-by: Christoph Hellwig
    Cc: Al Viro
    Cc: Stephen Smalley
    Cc: James Morris
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

27 Nov, 2007

1 commit

  • Srivatsa Vaddagiri noticed occasionally incorrect CPU usage
    values in top and tracked it down to stime going below 0 in
    task_stime(). Negative values are possible there due to the
    sampled nature of stime/utime.

    Fix suggested by Balbir Singh.

    Signed-off-by: Ingo Molnar
    Tested-by: Srivatsa Vaddagiri
    Reviewed-by: Balbir Singh

    Ingo Molnar
     

15 Nov, 2007

2 commits

  • Currently we special case when we have only the initial pid namespace.
    Unfortunately in doing so the copied case for the other namespaces was
    broken so we don't properly flush the thread directories :(

    So this patch removes the unnecessary special case (removing a usage of
    proc_mnt) and corrects the flushing of the thread directories.

    Signed-off-by: Eric W. Biederman
    Cc: Al Viro
    Cc: Pavel Emelyanov
    Cc: Sukadev Bhattiprolu
    Cc: Kirill Korotaev
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • It appears we overlooked support for removing generic proc files
    when we added support for multiple proc super blocks. Handle
    that now.

    [akpm@linux-foundation.org: coding-style cleanups]
    Signed-off-by: Eric W. Biederman
    Acked-by: Pavel Emelyanov
    Cc: Alexey Dobriyan
    Acked-by: Sukadev Bhattiprolu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

13 Nov, 2007

1 commit


07 Nov, 2007

1 commit


30 Oct, 2007

2 commits