19 Oct, 2007

1 commit


26 Jul, 2007

1 commit

  • This avoids use of the kernel-internal "xtime" variable directly outside
    of the actual time-related functions. Instead, use the helper functions
    that we already have available to us.

    This doesn't actually change any behaviour, but this will allow us to
    fix the fact that "xtime" isn't updated very often with CONFIG_NO_HZ
    (because much of the realtime information is maintained as separate
    offsets to 'xtime'), which has caused interfaces that use xtime directly
    to get a time that is out of sync with the real-time clock by up to a
    third of a second or so.

    Signed-off-by: John Stultz
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Signed-off-by: Linus Torvalds

    john stultz
     

09 Dec, 2006

3 commits

  • Change all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in
    linux/kernel/.

    Signed-off-by: Josef "Jeff" Sipek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josef "Jeff" Sipek
     
  • No need to take the global tty_mutex, signal->tty->driver can't go away while
    we are holding ->siglock.

    Signed-off-by: Oleg Nesterov
    Acked-by: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • Fix the locking of signal->tty.

    Use ->sighand->siglock to protect ->signal->tty; this lock is already used
    by most other members of ->signal/->sighand. And unless we are 'current'
    or the tasklist_lock is held we need ->siglock to access ->signal anyway.

    (NOTE: sys_unshare() is broken wrt ->sighand locking rules)

    Note that tty_mutex is held over tty destruction, so while holding
    tty_mutex any tty pointer remains valid. Otherwise the lifetime of ttys
    are governed by their open file handles. This leaves some holes for tty
    access from signal->tty (or any other non file related tty access).

    It solves the tty SLAB scribbles we were seeing.

    (NOTE: the change from group_send_sig_info to __group_send_sig_info needs to
    be examined by someone familiar with the security framework, I think
    it is safe given the SEND_SIG_PRIV from other __group_send_sig_info
    invocations)

    [schwidefsky@de.ibm.com: 3270 fix]
    [akpm@osdl.org: various post-viro fixes]
    Signed-off-by: Peter Zijlstra
    Acked-by: Alan Cox
    Cc: Oleg Nesterov
    Cc: Prarit Bhargava
    Cc: Chris Wright
    Cc: Roland McGrath
    Cc: Stephen Smalley
    Cc: James Morris
    Cc: "David S. Miller"
    Cc: Jeff Dike
    Cc: Martin Schwidefsky
    Cc: Jan Kara
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Zijlstra
     

08 Dec, 2006

1 commit


01 Oct, 2006

1 commit

  • There were a few accounting data/macros that are used in CSA but are #ifdef'ed
    inside CONFIG_BSD_PROCESS_ACCT. This patch is to change those ifdef's from
    CONFIG_BSD_PROCESS_ACCT to CONFIG_TASK_XACCT. A few defines are moved from
    kernel/acct.c and include/linux/acct.h to kernel/tsacct.c and
    include/linux/tsacct_kern.h.

    Signed-off-by: Jay Lan
    Cc: Shailabh Nagar
    Cc: Balbir Singh
    Cc: Jes Sorensen
    Cc: Chris Sturtivant
    Cc: Tony Ernst
    Cc: Guillaume Thouvenin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jay Lan
     

30 Sep, 2006

1 commit

  • Add tty locking around the audit and accounting code.

    The whole current->signal-> locking is all deeply strange but it's for
    someone else to sort out. Add rather than replace the lock for acct.c

    Signed-off-by: Alan Cox
    Acked-by: Arjan van de Ven
    Cc: Al Viro
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     

15 Jul, 2006

1 commit


01 Jul, 2006

1 commit


28 Jun, 2006

2 commits

  • Fix kernel-doc parameters in kernel/

    Warning(/var/linsrc/linux-2617-g9//kernel/auditsc.c:1376): No description found for parameter 'u_abs_timeout'
    Warning(/var/linsrc/linux-2617-g9//kernel/auditsc.c:1420): No description found for parameter 'u_msg_prio'
    Warning(/var/linsrc/linux-2617-g9//kernel/auditsc.c:1420): No description found for parameter 'u_abs_timeout'
    Warning(/var/linsrc/linux-2617-g9//kernel/acct.c:526): No description found for parameter 'pacct'

    Signed-off-by: Randy Dunlap
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • kernel/acct.c:579:19: warning: non-ANSI function declaration of function 'acct_process'

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

    Randy Dunlap
     

26 Jun, 2006

4 commits

  • In current 2.6.17 implementation, signal_struct refered from task_struct is
    used for per-process data structure. The pacct facility also uses it as a
    per-process data structure to store stime, utime, minflt, majflt. But those
    members are saved in __exit_signal(). It's too late.

    For example, if some threads exits at same time, pacct facility has a
    possibility to drop accountings for a part of those threads. (see, the
    following 'The results of original 2.6.17 kernel') I think accounting
    information should be completely collected into the per-process data structure
    before writing out an accounting record.

    This patch fixes this matter. Accumulation of stime, utime, minflt and majflt
    are done before generating accounting record.

    [mingo@elte.hu: fix acct_collect() siglock bug found by lockdep]
    Signed-off-by: KaiGai Kohei
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KaiGai Kohei
     
  • When pacct facility generate an 'ac_flag' field in accounting record, it
    refers a task_struct of the thread which died last in the process. But any
    other task_structs are ignored.

    Therefore, pacct facility drops ASU flag even if root-privilege operations are
    used by any other threads except the last one. In addition, AFORK flag is
    always set when the thread of group-leader didn't die last, although this
    process has called execve() after fork().

    We have a same matter in ac_exitcode. The recorded ac_exitcode is an exit
    code of the last thread in the process. There is a possibility this exitcode
    is not the group leader's one.

    KaiGai Kohei
     
  • The pacct facility need an i/o operation when an accounting record is
    generated. There is a possibility to wake OOM killer up. If OOM killer is
    activated, it kills some processes to make them release process memory
    regions.

    But acct_process() is called in the killed processes context before calling
    exit_mm(), so those processes cannot release own memory. In the results, any
    processes stop in this point and it finally cause a system stall.

    KaiGai Kohei
     
  • copy_process() appears to be the only caller of acct_clear_integrals() and
    does not pass in NULL task pointers. Remove the unecessary check.

    Signed-off-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     

23 Jun, 2006

1 commit

  • Give the statfs superblock operation a dentry pointer rather than a superblock
    pointer.

    This complements the get_sb() patch. That reduced the significance of
    sb->s_root, allowing NFS to place a fake root there. However, NFS does
    require a dentry to use as a target for the statfs operation. This permits
    the root in the vfsmount to be used instead.

    linux/mount.h has been added where necessary to make allyesconfig build
    successfully.

    Interest has also been expressed for use with the FUSE and XFS filesystems.

    Signed-off-by: David Howells
    Acked-by: Al Viro
    Cc: Nathan Scott
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

01 Apr, 2006

1 commit

  • I noticed a bug on the process accounting facility. In multi-threading
    process, some data would be recorded incorrectly when the group_leader dies
    earlier than one or more threads. The attached patch fixes this problem.

    See below. 'bugacct' is a test program that create a worker thread after 4
    seconds sleeping, then the group_leader dies soon. The worker thread
    consume CPU/Memory for 6 seconds, then exit. We can estimate 10 seconds as
    etime and 6 seconds as stime + utime. This is a sample program which the
    group_leader dies earlier than other threads.

    The results of same binary execution on different kernel are below.
    -- accounted records --------------------
    | btime | utime | stime | etime | minflt | majflt | comm |
    original | 13:16:40 | 0.00 | 0.00 | 6.10 | 171 | 0 | bugacct |
    patched | 13:20:21 | 5.83 | 0.18 | 10.03 | 32776 | 0 | bugacct |
    (*) bugacct allocates 128MB memory, thus 128MB / 4KB = 32768 of minflt is
    appropriate.

    -- Test results in original kernel ------
    $ date; time -p ./bugacct
    Tue Mar 28 13:16:36 JST 2006 start_time.tv_sec*NSEC_PER_SEC
    + current->start_time.tv_nsec;
    ----

    The following section calculates stime and utime of the process.
    But it might count the utime and stime of the group_leader duplicatly
    and ignore the utime and stime of the thread dies last, when one or
    more threads remain after group_leader dead.
    The ac_utime should be calculated as the sum of the signal->utime
    and utime of the thread dies last. The ac_stime should be done also.

    ---- do_acct_process() in kernel/acct.c:
    jiffies = cputime_to_jiffies(cputime_add(current->group_leader->utime,
    current->signal->utime));
    ac.ac_utime = encode_comp_t(jiffies_to_AHZ(jiffies));
    jiffies = cputime_to_jiffies(cputime_add(current->group_leader->stime,
    current->signal->stime));
    ac.ac_stime = encode_comp_t(jiffies_to_AHZ(jiffies));
    ----

    The part of the minflt/majflt calculation has same problem.
    This patch solves those problems, I think.

    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KaiGai Kohei
     

12 Jan, 2006

1 commit

  • - Move capable() from sched.h to capability.h;

    - Use where capable() is used
    (in include/, block/, ipc/, kernel/, a few drivers/,
    mm/, security/, & sound/;
    many more drivers/ to go)

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

    Randy.Dunlap
     

07 Jan, 2006

1 commit

  • There are some more places where the use of cputime_t instead of an integer
    type and the associated macros is necessary for the virtual cputime accounting
    on s390. Affected are the s390 specific appldata code and BSD process
    accounting.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Schwidefsky
     

08 Nov, 2005

1 commit

  • 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
     

30 Oct, 2005

1 commit

  • I was lazy when we added anon_rss, and chose to change as few places as
    possible. So currently each anonymous page has to be counted twice, in rss
    and in anon_rss. Which won't be so good if those are atomic counts in some
    configurations.

    Change that around: keep file_rss and anon_rss separately, and add them
    together (with get_mm_rss macro) when the total is needed - reading two
    atomics is much cheaper than updating two atomics. And update anon_rss
    upfront, typically in memory.c, not tucked away in page_add_anon_rmap.

    Signed-off-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

11 Sep, 2005

1 commit


08 Sep, 2005

1 commit

  • There is a problem in the accounting subsystem in the kernel can not
    correctly handle files larger than 2GB. The output file containing the
    process accounting data can grow very large if the system is large enough
    and active enough. If the 2GB limit is reached, then the system simply
    stops storing process accounting data.

    Another annoying problem is that once the system reaches this 2GB limit,
    then every process which exits will receive a signal, SIGXFSZ. This signal
    is generated because an attempt was made to write beyond the limit for the
    file descriptor. This signal makes it look like every process has exited
    due to a signal, when in fact, they have not.

    The solution is to add the O_LARGEFILE flag to the list of flags used to
    open the accounting file. The rest of the accounting support is already
    largefile safe.

    The changes were tested by constructing a large file (just short of 2GB),
    enabling accounting, and then running enough commands to cause the
    accounting data generated to increase the size of the file to 2GB. Without
    the changes, the file grows to 2GB and the last command run in the test
    script appears to exit due a signal when it has not. With the changes,
    things work as expected and quietly.

    There are some user level changes required so that it can deal with
    largefiles, but those are being handled separately.

    Signed-off-by: Peter Staubach
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Staubach
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds