7 years agolinux-2.6.20-ovz008 released master ovz008
OpenVZ team [Mon, 9 Jul 2007 05:29:23 +0000]
linux-2.6.20-ovz008 released

7 years agoCompilation fix for cap_best patch
Pavel Emelianov [Thu, 5 Jul 2007 15:11:56 +0000]
Compilation fix for cap_best patch

7 years agoCompilation fixes related to pid namespaces after merging stable patches
Pavel Emelianov [Thu, 5 Jul 2007 15:11:29 +0000]
Compilation fixes related to pid namespaces after merging stable patches

7 years ago[NFS] Small compilation fix after merging stable patches
Pavel Emelianov [Thu, 5 Jul 2007 15:10:45 +0000]
[NFS] Small compilation fix after merging stable patches

7 years ago[CPT] Compilation fixes
Pavel Emelianov [Thu, 5 Jul 2007 15:09:59 +0000]
[CPT] Compilation fixes

From now on CPT will be turned on in 2.6.20 kernel.

7 years ago[CPT] bug in restore net routes
Alexey Kuznetsov [Thu, 5 Jul 2007 15:05:53 +0000]
[CPT] bug in restore net routes

When netroute section in dump is padded, restore tries
to interpret padding as the next rtnetlink message and deadlocks
interpreting it as message of zero length.

7 years agorandom: fix seeding with zero entropy
Matt Mackall [Wed, 4 Jul 2007 10:41:47 +0000]
random: fix seeding with zero entropy

Add data from zero-entropy random_writes directly to output pools to
avoid accounting difficulties on machines without entropy sources.

Tested on lguest with all entropy sources disabled.

Signed-off-by: Matt Mackall <>
Acked-by: "Theodore Ts'o" <>
Signed-off-by: Linus Torvalds <>
Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>


7 years ago[PATCH] dcache: move might_sleep() from under preempt_disable()
Alexey Dobriyan [Sat, 9 Jun 2007 11:43:33 +0000]
[PATCH] dcache: move might_sleep() from under preempt_disable()

dput() had might_sleep() check in the very beginning.
After renaming to dput_recursive() and adding preempt_disable() call
this check ended up in region with disabled preemption, so with
CONFIG_DEBUG_SPINLOCK_SLEEP=y and preemption on dmesg gets heavily

So, do might_sleep() check earlier.

7 years agoSpeedup the dcache shrinker
Alexey Dobriyan [Sat, 9 Jun 2007 11:42:42 +0000]
Speedup the dcache shrinker

Backport of
    commit d52b908646b88cb1952ab8c9b2d4423908a23f11
    Author: Miklos Szeredi <>
    Date:   Tue May 8 00:23:46 2007 -0700

    fix quadratic behavior of shrink_dcache_parent()

    The time shrink_dcache_parent() takes, grows quadratically with the depth
    of the tree under 'parent'.  This starts to get noticable at about 10,000.

    These kinds of depths don't occur normally, and filesystems which invoke
    shrink_dcache_parent() via d_invalidate() seem to have other depth
    dependent timings, so it's not even easy to expose this problem.

    However with FUSE it's easy to create a deep tree and d_invalidate()
    will also get called.  This can make a syscall hang for a very long

    This is the original discovery of the problem by Russ Cox:

    The following patch fixes the quadratic behavior, by optionally allowing
    prune_dcache() to prune ancestors of a dentry in one go, instead of doing
    it one at a time.

    Common code in dput() and prune_one_dentry() is extracted into a new helper
    function d_kill().

    shrink_dcache_parent() as well as shrink_dcache_sb() are converted to use
    the ancestry-pruner option.  Only for shrink_dcache_memory() is this
    behavior not desirable, so it keeps using the old algorithm.

Signed-off-by: Miklos Szeredi <>
Cc: Al Viro <>
Cc: Maneesh Soni <>
Acked-by: "Paul E. McKenney" <>
Cc: Dipankar Sarma <>
Cc: Neil Brown <>
Cc: Trond Myklebust <>
Cc: Christoph Hellwig <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>

Additionally merged:
    commit 24c32d733dd44dbc5b9dcd0b8de58e16fdbeac7
    From: Andrew Morton <>
    Date: Tue, 8 May 2007 07:23:49 +0000 (-0700)
    Subject: mm: shrink parent dentries when shrinking slab
    X-Git-Tag: v2.6.22-rc1~799

    mm: shrink parent dentries when shrinking slab

    Teach the dentry slab shrinker to aggressively shrink parent dentries when
    shrinking the dentry cache.

    This is done to attempt to improve the situation where the dentry slab cache
    gets a lot of internal fragmentation due to pages containing directory
    dentries.  It is expected that this change will cause some of those dentries
    to be reaped earlier, and with less scanning.

    Needs careful testing.

Cc: Miklos Szeredi <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>

Typical numbers after mkdir("foo")/chdir("foo") done N times and
immediate "time vzctl stop"


        real    1m14.529s       1m16.602s       1m16.143s
        user    0m0.009s        0m0.014s        0m0.007s
        sys     1m4.569s        1m6.638s        1m7.187s
        real    0m10.078s       0m10.080s       0m10.079s
        user    0m0.007s        0m0.012s        0m0.012s
        sys     0m0.055s        0m0.053s        0m0.054s

Less easy case for this patch is the following configuration

        *--*--*--* ...
         \  \  \  \
          *  *  *  *

Speedup for this case is less rosy but significant anyway:

        L       before          after

        4096    11.40s          9.75s
        8192    24.00s          16.80s
        65536   15m39.897s      5m29.738s

Bug #73640

7 years ago[PATCH] sched: fix up fairsched tick duration according to VCPU timeslice
Alexandr Andreev [Sat, 9 Jun 2007 11:41:00 +0000]
[PATCH] sched: fix up fairsched tick duration according to VCPU timeslice
With latest 'vcpu dynamic timeslice' patch we broke
fairsched scheduler logic a bit, which assumed,
that fairsched_schedule() must be called on each timer tick.

New bigger fairsched timeslice was introduced:
this value must be always >= vcpu timeslice

Bug #82969

7 years ago[PATCH] Fix iowait stats in VE0
Vasily Tarasov [Sat, 9 Jun 2007 11:40:26 +0000]
[PATCH] Fix iowait stats in VE0

2.6.18 OVZ kernels don't account iowait time,
this value is always displayed as zero:

$ cat /proc/stat  | grep cpu
cpu  1700 5 1818 11790110 0 60 204 0
cpu0 893 4 1020 5894818 0 56 174 0
cpu1 807 1 797 5895291 0 4 29 0

This happens since calculations usually happen in idle context.
Actually there is no good definition of iowait for global VE0 context.
And the whole iowait concept is arguable, but still, let's try to account
as good as possible.

7 years ago[PATCH] Fix debug messages when CONFIG_DEBUG_PREEMPT is used
Vasily Tarasov [Sat, 9 Jun 2007 11:39:55 +0000]
[PATCH] Fix debug messages when CONFIG_DEBUG_PREEMPT is used
OpenVZ kernels produce a lot of similar messages:

BUG: using smp_processor_id() in preemptible [00000001] code:
caller is io_schedule+0x22/0x53
Call Trace: ...

Two reasons of these messages:
1) we call smp_processor_id() from io_schedule/io_schedule_timeout
   without preemption disabled. minor, raw_smp_processor_id() should be used.
2) task_struct->cpus_allowed has mask of vcpus instead of pcpus.
   Therefore debug_smp_processor_id() function fails to check that the
   process can run only on one current cpu.

The patch fixes both issues.

7 years ago[PATCH] sched: boot CPU can have non-zero ID (sparc)
Kirill Korotaev [Sat, 9 Jun 2007 11:38:21 +0000]
[PATCH] sched: boot CPU can have non-zero ID (sparc)

I was blindly assuming that boot processor ID is always 0,
which was not true on SUN4U machine where boot CPU has ID 1
and 2nd CPU has ID 0. Strange, but it is.
So replace 0 with real processor id in the code.

7 years ago[PATCH] fairsched: fix VCPU info in show regs on x86-64
Kirill Korotaev [Sat, 9 Jun 2007 11:37:43 +0000]
[PATCH] fairsched: fix VCPU info in show regs on x86-64

7 years ago[PATCH] rename vcpu_info to vcpu_struct due to conflict with Xen
Evgeny Kravtsunov [Sat, 9 Jun 2007 11:37:14 +0000]
[PATCH] rename vcpu_info to vcpu_struct due to conflict with Xen

Rename vcpu_info to vcpu_struct due to conflict with Xen
which uses the same name for its data structure (sigh... globally...)

Thanks to seyko2 for testing OVZ-Xen kernel.

7 years ago[SCHED] compilation fix in case CONFIG_SCHED_VCPU=n
Alexandr Andreev [Sat, 9 Jun 2007 11:36:40 +0000]
[SCHED] compilation fix in case CONFIG_SCHED_VCPU=n

This patch fixes compilation of OVZ kernel with CONFIG_SCHED_VCPU=n

7 years ago[SCHED] optimization: dynamic vcpu_timeslice
Alexandr Andreev [Sat, 9 Jun 2007 11:34:07 +0000]
[SCHED] optimization: dynamic vcpu_timeslice

vcpu_timeslice == -1 now has special meaning (and -1 is default value
now). In this case, actual vcpu_timeslice value will depend on number of
VCPU's ready to run:

assume N = ready_vcpus / nr_pcpus

for N <= 1, vcpu_timeslice will be 8
1 < N <= 2, vcpu_timeslice = 4
2 < N <= 3, vcpu_timeslice = 2
3 < N <= 4, vcpu_timeslice = 1
N > 4, vcpu_timeslice = 0

 This patch lets significantly improve performance of 'context switch'
 test from unixbench-4.1.0-wht-1, when several instances of this test is

 On a host with 16 CPU's:

 # cd unixbench-4.1.0-wht-1
 # echo 0 > /proc/sys/kernel/vcpu_timeslice
 # ./Run context1 16
 # echo -1 > /proc/sys/kernel/vcpu_timeslice
 # ./Run context1 16

7 years ago[PATCH] ppc: fix screwed OVZ syscall numbers
Kirill Korotaev [Sat, 9 Jun 2007 11:33:38 +0000]
[PATCH] ppc: fix screwed OVZ syscall numbers
Fix enumeration of OVZ syscall numbers on powerpc

Thanks to Christian Kaiser for noticing this.

7 years ago[CPT] restore packet socket
Alexey Kuznetsov [Sat, 9 Jun 2007 11:32:08 +0000]
[CPT] restore packet socket

Binding of packet socket was skipped.

One tricky bit: getsockname returns "real" sockaddr length
and bind() does not accept real name, it wants sizeof(struct sockaddr_ll).

Missing bits:
- multicast list, incuding promisc status
- statistics is not restored

Enough for beginning, the rest requires surgery in core.

7 years ago[PATCH] CPT: checkpoint inodes with deleted reference
Andrey Mirkin [Sat, 9 Jun 2007 11:31:42 +0000]
[PATCH] CPT: checkpoint inodes with deleted reference

Consider the following scenario:
1. Create file (file1) and hard link to it (file2)
2. Open file2
3. Unlink file2

After that during checkpointing we will have the following err:
Can not dump VE: Device or resource busy deleted reference to existing inode,
checkpointing is impossible

The inode in question is not deleted, but it is not foundable
from inside checkpointed process group and not easy foundable on the disk :/

So we are trying to find another dentry with the same inode in 2 common places:
1. In inode->i_dentry alias list
2. In dir in which deleted dentry itself is located

Bug #72540

7 years ago[PATCH] CPT: restore deleted files (hardlink case)
Andrey Mirkin [Sat, 9 Jun 2007 11:30:22 +0000]
[PATCH] CPT: restore deleted files (hardlink case)

The bug was here all the time, but it was never triggered as we never entered
the following path on checkpointing:

if (!IS_ROOT(d) && d_unhashed(d)) {
        struct file *parent;
        parent = iobj->o_parent;
        if (!parent ||
                        (!IS_ROOT(parent->f_dentry) && d_unhashed(parent->f_dentry))) {
                /* Inode is not deleted, but it does not
                 * have references from inside checkpointed
                 * process group. We have options:
                 * A. Fail, abort checkpointing
                 * B. Proceed. File will be cloned.
                 * A is correct, B is more complicated */
                /* Just as a hint where to create deleted file */
                if (ino->i_nlink != 0) {
                        eprintk_ctx("deleted reference to existing inode, checkpointing is impossible\n");
                        return -EBUSY;
        } else {
<<< HERE
                /* Refer to _another_ file name. */
                err = cpt_dump_filename(parent, 0, ctx);
                if (err)
                        return err;
                if (S_ISREG(ino->i_mode) || S_ISDIR(ino->i_mode))
                        dump_it = 0;

So, in image file for deleted file we always had its content and never
a reference to another file.

The fix is straightforward: check the type of the object in the image and
restore file content if needed.

7 years ago[PATCH] CPT: check if ip_talbes are enabled before dumping them
Andrey Mirkin [Sat, 9 Jun 2007 11:29:06 +0000]
[PATCH] CPT:  check if ip_talbes are enabled before dumping them

iptables-save returns error if module ip_tables is not loaded.
So, we just do not need to dump iptables at all if this module is not loaded in VE.
Don't try to dump iptables if they are not enabled in VE.

7 years ago[CPT][IA64] some prctl flags are forgotten
Alexey Kuznetsov [Sat, 9 Jun 2007 11:28:16 +0000]
[CPT][IA64] some prctl flags are forgotten

Some apps do lots of unaligned accesses, know about this
and use prctl(). We did not save/restore those flags and
got flood of warnings after checkpointing.

7 years ago[CPT] fix compilation warning due to cast u64 -> pointer
Alexey Kuznetsov [Sat, 9 Jun 2007 11:27:49 +0000]
[CPT] fix compilation warning due to cast u64 -> pointer

7 years ago[CPT] cosmetic fix to match 2.6.9 text
Alexey Kuznetsov [Sat, 9 Jun 2007 11:27:22 +0000]
[CPT] cosmetic fix to match 2.6.9 text

In 2.6.9 it was a critical bug, image would be corrupted
because of broken alignment if we did not make this.
In 2.6.18 it is just nice.

7 years ago[CPT][IA64] save/restore NaT values
Alexey Kuznetsov [Sat, 9 Jun 2007 11:25:21 +0000]
[CPT][IA64] save/restore NaT values

This patch closes two remaining holes in IA64 cpt implementation,
both are of no immediate practical value, but neraly impossible to fix
after we freeze layout of cpt image structs.

1. Migration between hosts with different layout of struct thread_info,
   which is possible, if some new bits are added to thread_info in newer
2. NaT bits are acurately saved and restored. This is required only
   when some application uses control speculative loads, current compilers
   are not able to do this, but this can change.

7 years ago[CPT] namespace semaphore possible deadlock
Alexey Kuznetsov [Sat, 9 Jun 2007 11:24:30 +0000]
[CPT] namespace semaphore possible deadlock

Old bug. To my shame I knew about this, but ignored.

The fix is to drop namespace semaphore. We make mntget() on current
mnt, so that it will not disappear from under us. It still can be
unmounted with MNT_DETACH, in this case we cannot proceed with
scanning mnt list and we must not: unmounting something inside
VE while checkpointing is an obvious good reason to fail.

7 years ago[PATCH] CPT: print file name when fail to open it
Andrey Mirkin [Sat, 9 Jun 2007 11:23:02 +0000]
[PATCH] CPT: print file name when fail to open it
Print file name if we failed to open it.
This information will be usefull for resolving problems.

Bug #83180

7 years ago[PATCH] CPT: fix potential pid leak
Pavel Emelianov [Sat, 9 Jun 2007 11:22:23 +0000]
[PATCH] CPT: fix potential pid leak

When restoring the VE restore_one_signal_struct() can
occasionally leak some pids.

Bug #82895

7 years ago[CPT] restore last pid
Alexey Kuznetsov [Sat, 9 Jun 2007 11:19:48 +0000]
[CPT] restore last pid

Sigh. I hoped it is not necessary. It is. bash goes insane
when its children get not monotonic pids.

The place where we store saved last pid is unusual.
Violating tradition I extend one of cpt image structs.
This should be ok: migration to older kernels will be prohibited,
migration from old to new ones is OK.

7 years ago[CPT] Fix possible deadlock in checkpointing of mm
Alexey Kuznetsov [Sat, 9 Jun 2007 11:19:13 +0000]
[CPT] Fix possible deadlock in checkpointing of mm

Learned it wrong once and did not relearn. anon_vma lock
cannot be taken under page table lock. And it is taken and
should be taken in reversed order, cpt_mm even has a special
hack due to wrong understanding: look at chunk converting ugly
spin_trylock to spin_lock.

Difference of previous version: in one case (does not happen normally,
but yet), page table lock could remain locked.

Bug #82785

7 years ago[PATCH] CPT: fix kernel_thread error code checks
Andrey Mirkin [Sat, 9 Jun 2007 11:18:37 +0000]
[PATCH] CPT: fix kernel_thread error code checks
Some versions of tar return non-zero error code if it was not possible to
write warning message to stderr. So, we need to open /dev/null for it.
But during restore we will face another problem - /dev is stored on tmpfs, so
we are not able to open /dev/null and we need to create it.

Also there is another bug which come to CPT code from mainstream kernel_thread
helper. If our function returns an error (e.g. exec failed) it doesn't place
correct exit code to edi register before calling do_exit.

Bug #83183

7 years agoCompilation fix for previous patch
Pavel Emelianov [Sat, 9 Jun 2007 11:17:17 +0000]
Compilation fix for previous patch

7 years agoWhile checkpointing due to memory shortage CPT processes
Andrey Mirkin [Sat, 9 Jun 2007 10:48:56 +0000]
While checkpointing due to memory shortage CPT processes
can be killed and tmpfs will not be saved.

During restore we will see such errors:

CPT ERR: e0000002ef9c5000,111 :-2 mounting /dev/pts devpts 40000000
CPT ERR: e0000002ef9c5000,111 :rst_namespace: -2

Bug #79854

This happens as /dev is tmpfs now and its content was not saved during

We need to check exit status of tar and iptables-save to be sure that they
exited normally.

Changes from v1:
- return -EINVAL in case of error

7 years ago[XEN] Fix LDT handling - There is one chunk LDT data only
Evgeny Kravtsunov [Sat, 9 Jun 2007 09:26:30 +0000]
[XEN] Fix LDT handling - There is one chunk LDT data only

7 years ago[PATCH] sysctl: add VE capability boundary set sysctl
Vasily Tarasov [Sat, 9 Jun 2007 09:14:15 +0000]
[PATCH] sysctl: add VE capability boundary set sysctl
The user wishes to have virtualized kernel.cap-bound sysctl in order to
use lcap tool to observe capabilities allowed in VE. We have cap_default
field on ve_struct, that can be modified to be used as virtualized
cap_bset. This patch:
- renames cap_default -> ve_cap_bset
- virtualizes cap_bset
- introduces new proc and strategy routines to handle appropriate sysctl

7 years ago[CPT] too aggressive sys_futex() restart
Alexey Kuznetsov [Sat, 9 Jun 2007 09:13:00 +0000]
[CPT] too aggressive sys_futex() restart

Checkpointing used to enforce restart of sys_futex even when
it returns -EINTR to workaround for sick return value of FUTEX_WAIT.
Of course, this is wrong (f.e. it means restart of timed FUTEX_WAIT
with original timeout :-(), but do not have much of choice if we do
not want to break everything.

At least one case can be relaxed. If we have signal pending,
when we restore we must not restart. This pending signal would
interrupt FUTEX_WAIT in any case. This fixes sem_wait()

7 years ago[CPT] 2.6.9 <-> 2.6.18 features mask compatibility issue
Andrey Mirkin [Sat, 9 Jun 2007 09:12:25 +0000]
[CPT] 2.6.9 <-> 2.6.18 features mask compatibility issue

Use VE_FEATURES_OLD mask for old (< 2.6.18 kernel) CPT images.

7 years ago[CPT] prevent changes of VM after VE was checkpointed
Alexey Kuznetsov [Sat, 9 Jun 2007 09:11:50 +0000]
[CPT] prevent changes of VM after VE was checkpointed

It is possible that processes' VM is changed after VE is checkpointed
and killed. At the moment it will happen when a process set clear_parent_tid
or robust list pointers. It was not considered a problem, because
VM is about to be destroyed in any case.

But one case was missed: corresponging VM areas could be mapped
to a file. If it is not deleted, the change will reach file system
and migrate. Oops. F.e. shared locked futex will be unlocked after
migration. (glibc tst-robust8 test)

7 years ago[CPT] VE suspend cleanups
Alexey Kuznetsov [Sat, 9 Jun 2007 09:10:03 +0000]
[CPT] VE suspend cleanups

The patch fixes one bug. Sometimes one process  sleeps
in an uninterruptible state waiting for some event depending
on another process, which could be suspended.

I know three such cases:

1. Process did vfork() and waits when child will exec()
2. Thread did exec() and waits when its siblings will die.
3. Thread makes coredump and waits when siblings stop.

We detected case #1 directly by looking at tsk->vfork_done.
In another places suspend timed out and failed, which is obviously
incorrect. It is possible to handle cases #2,3 like we did with vfork,
but it is not necessary. The patch suggests universal solution:
we split suspend to several shorter  rounds: the first round
tries to suspend for 200msec, if it fails, VE is unfreezed
and suspend is retried after some time. We repeat the attempts
with increasing timeout until VE is frozen or major timeout (10sec)

Besides that, the patch reorders suspend code, so that it becomes
more or less readable.

7 years ago[PATCH] CPT: adjust UBC limits before restoring processes
Andrey Mirkin [Sat, 9 Jun 2007 09:05:52 +0000]
[PATCH] CPT: adjust UBC limits before restoring processes

Move UBC limit adjustments in more appropriate place, where it is actually needed.

UBC limits can be set to maximum value during restore process only after
execution of external processes (tar, iptables-restore) to avoid security

7 years agoWe have a problem with external processes.
Andrey Mirkin [Sat, 9 Jun 2007 09:04:41 +0000]
We have a problem with external processes.

If someone enters to VE forks and does some job w/o exec,
then the process is not considered as external (pids are virtual),
but some of the files (e.g. libs) can be from HN, i.e. external.
New version of vzctl lib enters in VE, forks and executes some function
(mainly vzagent functions). The parent then exits before the child finishes
its job. And child is reparented to VE's init.

Temporary and quick fix for this bug:
On suspend kill processes which have mm->vps_dumpable == 0.

Bug #81722

7 years ago[CPT] More fixes in inotify to make it checkpointable
Vasily Tarasov [Sat, 9 Jun 2007 09:03:53 +0000]
[CPT] More fixes in inotify to make it checkpointable

7 years ago[PATCH] VZDQ: Fix lockdep warning about s_umount dependancy
Alexey Dobriyan [Sat, 9 Jun 2007 09:02:24 +0000]
[PATCH] VZDQ: Fix lockdep warning about s_umount dependancy

Lockdep learns false dependency due to vz_restore_symlink()
and later complains about possible circular locking when quotaon
is done.

Temporarily up ->s_umount semaphore to workaround this.

7 years ago[VZDQ] forced accounting for vzquota
Alexey Kuznetsov [Sat, 9 Jun 2007 09:01:40 +0000]
[VZDQ] forced accounting for vzquota

vzquota in GFS is implemented differently of one for ext3.
Instead of atomic check-and-account, it makes checking first
and, if at least one block can be added, it starts transaction,
which makes strict accounting.

We need two new methods:

1. Forced accounting is implemented by passing a special
   value to alloc_space.
2. Quota checking also can be done in this way, but for
   now it is implemnted as check-and-account for 1 block
   and immediately free it. No modifications to vzquota core

7 years ago[VZDQ] Fix GFP_KERNEL allocation under spin lock in vzdq_aquot_buildmntlist
Alexey Dobriyan [Sat, 9 Jun 2007 09:00:51 +0000]
[VZDQ] Fix GFP_KERNEL allocation under spin lock in vzdq_aquot_buildmntlist

Switch allocation from GFP_KERNEL to GFP_ATOMIC under vfsmount_lock
in vzdq_aquot_buildmntlist()

7 years ago[VZDQ] Trivial fix for lookup
Alexey Dobriyan [Sat, 9 Jun 2007 09:00:23 +0000]
[VZDQ] Trivial fix for lookup

"" was memcmp'd for only 11 symbols,
allowing names like "vzaquota.grouX" to be looked up successfully.

7 years ago[VZDQ] sb->put_super can be NULL in valid cases
Denis Lunev [Sat, 9 Jun 2007 08:59:17 +0000]
[VZDQ] sb->put_super can be NULL in valid cases
put_super() superblock operation was not checked for NULL in vzquota
leading to NULL dereference.
Bug #81936

7 years ago[PATCH] vzdquota: compilation fix for ppc32
Vasily Tarasov [Sat, 9 Jun 2007 08:54:56 +0000]
[PATCH] vzdquota: compilation fix for ppc32
While compiling on ppc32 the following error appears:

  Building modules, stage 2.
WARNING: "__cmpdi2" [fs/vzdquota.ko] undefined!
make[2]: *** [__modpost] Error 1

The problem is that switch((long_long_var)) is not
a primitive for ppc32 gcc: libgcc.a is needed,
which is out of the kernel.

The problem was noticed by mbaranzak user at forum
and he found the reason of it.

7 years ago[BRIDGE] bridge deliver to original eth0 device
Dmitry Mishin [Sat, 9 Jun 2007 08:54:11 +0000]
[BRIDGE] bridge deliver to original eth0 device

 - now packets are input to the local system as they are
   coming from phys device only;
 - fixed bunch of bugs with VE <-> HN communications.

7 years ago[PATCH] Unalias VE_IP_NAT for ip_nat and iptable_nat modules
Alexey Dobriyan [Sat, 9 Jun 2007 08:52:40 +0000]
[PATCH] Unalias VE_IP_NAT for ip_nat and iptable_nat modules

If ip_nat and ip_tables modules are loaded before VE start, and
iptable_nat after VE start, on VE stop kernel will crash in
ipt_unregister_table() attempting to unregister NULL table.

Split VE_IN_NAT flag responsible for two modules.

7 years ago[VE] unalias IPv6 iptables bit mask from IPv4
Alexey Dobriyan [Sat, 9 Jun 2007 08:50:40 +0000]
[VE] unalias IPv6 iptables bit mask from IPv4
VE_IP_MANGLE flag is used as mask for both IPv4 and IPv6 modules which
is no-no, because ip6table_mangle can be loaded after VE start.

Choose numbers to not contradict with vzctl header.

Temporarily mirror VE_IP_IPTABLES into IPv6 mask.
When vzctl will start doing right thing, this mirroring can be dropped.

7 years ago[NFS] Unfortunately, counter on RPC client counts only clones...
Denis Lunev [Sat, 9 Jun 2007 08:50:05 +0000]
[NFS] Unfortunately, counter on RPC client counts only clones...

... but not real ussage. cl_dead flag leads to client destruction in
rpc_release_client while it is really in use. So, we have to introduce
a new flag with the meaning similar to cl_dead in all places except
rpc_release_client. True recounting is too expensive.

Based on idea from Dmitry Monakhov.

Bugs #82764, #82875

7 years agoAdd NFS timeout handle for TCP transport
Pavel Emelianov [Sat, 9 Jun 2007 08:48:45 +0000]
Add NFS timeout handle for TCP transport

This is a ported on 2.6.20 and reworked patch from Denis.

7 years ago[NFS] fix NFS auto-umount timeout sysctl
Denis Lunev [Sat, 9 Jun 2007 08:40:29 +0000]
[NFS] fix NFS auto-umount timeout sysctl

- changes the timeout units from jiffies to seconds
- fixes assignment from userspace (was impossible,
  since UINT_MAX was treated as negative)

7 years ago[NFS] Compilation fix for prev patch
Kirill Korotaev [Sat, 9 Jun 2007 08:38:59 +0000]
[NFS] Compilation fix for prev patch

It requires some symbols to be exported.

Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>

7 years ago[NFS] shutdown NFS properly if hanged
Denis Lunev [Sat, 9 Jun 2007 08:37:52 +0000]
[NFS] shutdown NFS properly if hanged

7 years ago[NFS] virtualize NLM hosts cache
Denis Lunev [Fri, 8 Jun 2007 16:15:58 +0000]
[NFS] virtualize NLM hosts cache

Bug #74374

7 years ago[PATCH] veth: rework VE traffic filtering
Andrey Mirkin [Fri, 8 Jun 2007 16:08:32 +0000]
[PATCH] veth: rework VE traffic filtering

Mac filtering in veth_xmit() was a bit incorrect:
broadcasts and multicasts were allowed from VE.
Rearrange code, make it more clear and assymetric :/

7 years ago[PATCH] veth: multicasts should be forwarded as well
Kirill Korotaev [Fri, 8 Jun 2007 15:56:06 +0000]
[PATCH] veth: multicasts should be forwarded as well

Right now veth_xmit passes broadcasts only.
Thanks to Daniel Pittman for noticing this.

7 years ago[VE] rename local macro ADDR() to avoid conflict with Xen
Evgeny Kravtsunov [Fri, 8 Jun 2007 15:53:54 +0000]
[VE] rename local macro ADDR() to avoid conflict with Xen

Fix redefinition of ADDR in veth.c.
macro with name ADDR is also used by Xen in include/asm/mach-xen/asm/synch_bitops.h.

7 years ago[PATCH] VE: ve0 processes intialization
Alexandr Andreev [Fri, 8 Jun 2007 15:53:14 +0000]
[PATCH] VE: ve0 processes intialization

VE0 processes were initialized twice:
 - in copy_process()
 - in prepare_ve0_process() from init_ve_system()

this is redundant and unneeded. Leading to wrong ve0.pcounter

7 years ago[PATCH] disable OOM_DISABLE inside VE
Denis Lunev [Fri, 8 Jun 2007 15:48:35 +0000]
[PATCH] disable OOM_DISABLE inside VE
Prevent disabling of OOM from inside VE. Basically, it is safe to
allow priority changes inside VE, as in normal case we select UB and a
process inside UB then.

7 years ago[PATCH] init vps_dumpable early on exec
Kirill Korotaev [Fri, 8 Jun 2007 15:48:03 +0000]
[PATCH] init vps_dumpable early on exec
Since CPT uses vps_dumpable flag now for determining
external processes on checkpointing, we need to initialize
it earlier on mm creation on exec. Otherwise it can race.

7 years agoFix LTP test failure in syslog test.
Vitaliy Gusev [Fri, 8 Jun 2007 15:45:53 +0000]
Fix LTP test failure in syslog test.

LTP failure is minor and simple: it calls syslog(2) with wrong arguments
and awaiting for an error. But syslog() returns 0 since VE doesn't
have real console and console loglevel.

Thanks Christian Kaiser2 <> for noticing this.

7 years ago[PATCH] proc: brown paper bag bug in proc's ->setattr
Alexey Dobriyan [Fri, 8 Jun 2007 15:44:57 +0000]
[PATCH] proc: brown paper bag bug in proc's ->setattr

->setattr is called for something innocent like mtime updates, so
outright banning of ->setattr on global proc entries was sadistic.

Check if ->setattr is called with mask indicating MODE, UID, GID change
and check for globalness only in this case.


7 years ago[PATCH] VE: make /proc/kmsg to be VE local
Alexey Dobriyan [Fri, 8 Jun 2007 15:44:27 +0000]
[PATCH] VE: make /proc/kmsg to be VE local
Some people used to doing "chmod g+r /proc/kmsg". Make PDE corresponding
to /proc/kmsg local to VE, so it's possible to setattr it.

7 years ago[PATCH 1/2] VE: allow proc setattr on local proc entries
Alexey Dobriyan [Fri, 8 Jun 2007 15:44:02 +0000]
[PATCH 1/2] VE: allow proc setattr on local proc entries
If PDE is local to VE, there is no reason to not allow setattr on it --
changes won't affect corresponding global PDE and other VEs.

7 years ago[PATCH] VE cpu stats should be exported to user space in clocks
Kirill Korotaev [Fri, 8 Jun 2007 15:43:33 +0000]
[PATCH] VE cpu stats should be exported to user space in clocks

7 years ago[PATCH] arp: allow set arp cache entries from VE
Vasily Tarasov [Fri, 8 Jun 2007 15:40:29 +0000]
[PATCH] arp: allow set arp cache entries from VE
It is secure since later we use __dev_get_by_name() function which is
aware about current context.

7 years ago[PATCH] sysctl: add VE capability boundary set sysctl
Vasily Tarasov [Fri, 8 Jun 2007 15:38:59 +0000]
[PATCH] sysctl: add VE capability boundary set sysctl

The user wishes to have virtualized kernel.cap-bound sysctl in order to
use lcap tool to observe capabilities allowed in VE. We have cap_default
field on ve_struct, that can be modified to be used as virtualized
cap_bset. This patch:
- renames cap_default -> ve_cap_bset
- virtualizes cap_bset
- introduces new proc and strategy routines to handle appropriate sysctl

7 years ago[PATCH] proc: don't hash task dentries in VE0
Pavel Emelianov [Fri, 8 Jun 2007 15:36:23 +0000]
[PATCH] proc: don't hash task dentries in VE0

When task dies the proc dentries, that may be hashed are
shrunk with shrink_dcache_parent(). The problem is that
this routine doesn't guarantee that all the entries will
be flushed and thus pid may still have reference from the
appropriate inode.

When we have such dentries in VE0 holding pids from ve
this leads to pid leakage and inability to release the
beancounter after ve stop.

So don't hash such dentries - remove them immediately.

Bug #80025

Signed-off-by: Pavel Emelianov <>
Signed-off-by: Kirill Korotaev <>

7 years ago[VE] VE init signal delivery reworked to be similar to host
Denis Lunev [Fri, 8 Jun 2007 15:34:58 +0000]
[VE] VE init signal delivery reworked to be similar to host

Prevent VE init from receiving unexpected signals sent from VE
including *fatal* ones. Signals sent from VE0 are still allowed,
e.g. for fast VE stop.
Fix for sys_reboot called from VE to force VE death
(SIGKILL is sent in the context of VE).

7 years ago[PATCH] vmalloc info during OOM locking
Denis Lunev [Fri, 8 Jun 2007 15:29:05 +0000]
[PATCH] vmalloc info during OOM locking
vmlist_lock can't be held under any spin_lock which is help with IRQ.
This assumption is always broken for __alloc_pages.

Modified by Kirill: drop vprintstat() from show_mem() at all

Bug #81199

7 years ago[BC] cleanup: introcude top_beancounter helper
Pavel Emelianov [Fri, 8 Jun 2007 15:27:13 +0000]
[BC] cleanup: introcude top_beancounter helper

Many resources are accounted to top beancounter only.
Introduce a helper to make code look nicer.

When saving the mapped page's ub need to save top beancounter
as it is done for non-mapped write. (#81224)

Signed-off-by: Pavel Emelianov <>
Signed-off-by: Kirill Korotaev <>

7 years ago[PATCH] ubc: export ubc helpers for case CONFIG_UNIX=m
Kirill Korotaev [Fri, 8 Jun 2007 15:20:14 +0000]
[PATCH] ubc: export ubc helpers for case CONFIG_UNIX=m
Export ub_sock_getwres_other, since unix sockets can
call it from the module (unix.ko) when CONFIG_UNIX=m.

Thanks to Rafael Isturiz for having non-standart config :) and reporting this.

7 years ago[PATCH] ubc: fix compilation with CONFIG_UBC_DEBUG_IO=y
Kirill Korotaev [Fri, 8 Jun 2007 15:19:16 +0000]
[PATCH] ubc: fix compilation with CONFIG_UBC_DEBUG_IO=y
During rework of UBC /proc compilation with UBC_DEBUG_IO was
broken a bit.

7 years ago[BC] rework /proc/bc code
Pavel Emelianov [Fri, 8 Jun 2007 15:18:17 +0000]
[BC] rework /proc/bc code

Proc files creation suffered from two disadvantages:
1. It was racy in respect to bc remove/create
2. It couldn't correctly show hierarchical beancounters

Rework showing BC info by overriding readdir and lookup
methods for inodes under /proc/bc. The entry layout itself
is kept unchanged.

Plus create new entry names /proc/bc/<id>/debug to show
BC's id, parent credentials and some in-kernel memory
pointers purely for debugging.

Signed-off-by: Pavel Emelianov <>

7 years ago[BC] cleanup: remove unused subbeancounter_findcreate call
Denis Lunev [Fri, 8 Jun 2007 15:15:15 +0000]
[BC] cleanup: remove unused subbeancounter_findcreate call

7 years ago[BC] dentry_cache: drain alien caches only when CONFIG_NUMA is set
Alexandr Andreev [Fri, 8 Jun 2007 15:13:17 +0000]
[BC] dentry_cache: drain alien caches only when CONFIG_NUMA is set

Fix oops introduced by previous patch.
Bug #82721

We should deal with NUMA only when CONFIG_NUMA is set.

7 years ago[BC] dcache: drain alien caches on nodes on dcache acct on
Alexandr Andreev [Fri, 8 Jun 2007 15:12:09 +0000]
[BC] dcache: drain alien caches on nodes on dcache acct on

drain alien caches on nodes on dcache walking through
dentry slabs lists when turning dcache accounting on/off

Bug #81116

7 years ago[BC] dcache: pass correct node number to kmem_cache_free_block()
Alexandr Andreev [Fri, 8 Jun 2007 15:11:02 +0000]
[BC] dcache: pass correct node number to kmem_cache_free_block()

Fix warning in slab_put_obj() in debug kernels due to incorrect
node number passed to kmem_cache_free_block().

Bug #81116

7 years ago[BC] dcache: new style of array_cache entries access
Alexandr Andreev [Fri, 8 Jun 2007 15:09:45 +0000]
[BC] dcache: new style of array_cache entries access
cosmetics: new style of array_cache entries access

7 years ago[PATCH] update core/gfs2
Alexey Kuznetsov [Fri, 8 Jun 2007 15:08:02 +0000]
[PATCH] update core/gfs2

It is one way to do the thing. Logically and technically, it is
definitely the simplest.

NFS also will need replacemendt file->private_data -> file_private(file)
in a few of places.

7 years ago[PATCH] fuse: fix mknod of regular file
Dmitry Monakhov [Fri, 8 Jun 2007 15:06:09 +0000]
[PATCH] fuse: fix mknod of regular file

The wrong lookup flag was tested in ->create() causing havoc (error or
Oops) when a regular file was created with mknod() in a fuse

Thanks to J. Cameijo Cerdeira for the report.

Kernels 2.6.18 onward are affected.  Please apply to -stable as well.

Signed-off-by: Miklos Szeredi <>
Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>

7 years ago[PATCH 6/6] [PATCH] fuse: validate rootmode mount option
Dmitry Monakhov [Fri, 8 Jun 2007 15:05:11 +0000]
[PATCH 6/6] [PATCH] fuse: validate rootmode mount option

If rootmode isn't valid, we hit the BUG() in fuse_init_inode.  Now
EINVAL is returned.

Signed-off-by: Timo Savola <>
Signed-off-by: Miklos Szeredi <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>

7 years ago[NETFILTER]: {ip,nf}_conntrack_sctp: fix remotely triggerable NULL ptr dereference
Patrick McHardy [Fri, 8 Jun 2007 15:02:32 +0000]
[NETFILTER]: {ip,nf}_conntrack_sctp: fix remotely triggerable NULL ptr dereference

When creating a new connection by sending an unknown chunk type, we don't
transition to a valid state, causing a NULL pointer dereference in
sctp_packet when accessing sctp_timeouts[SCTP_CONNTRACK_NONE].

Fix by don't creating new conntrack entry if initial state is invalid.

Noticed by Vilmos Nebehaj <>

CC: Kiran Kumar Immidi <>
Signed-off-by: Patrick McHardy <>
Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>

7 years agouse simple_read_from_buffer in kernel/
Akinobu Mita [Fri, 8 Jun 2007 15:00:11 +0000]
use simple_read_from_buffer in kernel/

Cleanup using simple_read_from_buffer() for /dev/cpuset/tasks and

Cc: Paul Jackson <>
Cc: Randy Dunlap <>
Signed-off-by: Akinobu Mita <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>

X-Git-Tag: v2.6.22-rc1

7 years agoAdd data from zero-entropy random_writes directly to output pools to
Matt Mackall [Fri, 8 Jun 2007 14:56:25 +0000]
Add data from zero-entropy random_writes directly to output pools to
avoid accounting difficulties on machines without entropy sources.

Tested on lguest with all entropy sources disabled.

Signed-off-by: Matt Mackall <>
Acked-by: "Theodore Ts'o" <>
Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>

7 years ago[PATCH] disable "Disabled Privacy Extensions" messages
Vasily Averin [Fri, 8 Jun 2007 14:55:08 +0000]
[PATCH] disable "Disabled Privacy Extensions" messages

Hide annoing useless messages about disabled
IPv6 privacy extensions, which is always triggered by loopback:
"lo: Disabled Privacy Extensions"

Bug #83651

7 years ago[IA64] ptrace returns garbage for NaT bits
Alexey Kuznetsov [Fri, 8 Jun 2007 14:53:27 +0000]
[IA64] ptrace returns garbage for NaT bits

An old bug. Nobody needed those NaT bits, so that it was not noticed.

7 years ago[PATCH] seqfile: bash can hang in a loop reading from proc file
Alexey Dobriyan [Fri, 8 Jun 2007 14:52:41 +0000]
[PATCH] seqfile: bash can hang in a loop reading from proc file

Original problem: in some circumstances seq_file interface can present
infinite proc file to the following script when normally said proc file
is finite:

        while read line; do
                [do something with $line]
        done </proc/$FILE

bash, to implement such loop does essentially

        read(0, buf, 128);
        [find \n]
        lseek(0, -difference, SEEK_CUR);

Consider, proc file prints list of objects each of them consists of many
lines, each line is shorter than 128 bytes.

Two objects in list, with ->index'es being 0 and 1. Current one is 1,
as bash prints second object line by line.

Imagine first object being removed right before lseek().
traverse() will be called, because there is negative offset.
traverse() will reset ->index to 0 (!).
traverse() will call ->next() and get NULL in any usual iterate-over-list
code using list_for_each_entry_continue() and such. There is one object in
list now after all...
traverse() will return 0, lseek() will update file position and pretend
everything is OK.

So, what we have now: ->f_pos points to place where second object will be
printed, but ->index is 0. seq_read instead() of returning EOF, will start
printing first line of first object every time it's called, until enough
objects are added to ->f_pos return in bounds.

Fix is to update ->index only after we're sure we saw enough objects down
the road.

Bug #82819

Signed-off-by: Alexey Dobriyan <>
Signed-off-by: Kirill Korotaev <>

7 years ago[PATCH] nfs: fix req refcnt leak preventing umount
Trond Myklebust [Fri, 8 Jun 2007 14:43:07 +0000]
[PATCH] nfs: fix req refcnt leak preventing umount

Original Denis Lunev analyses:
- nfs_direct_req_alloc creates dreq with dreq->kref->refcount == 2
- on success path the kref_put is called in
      nfs_direct_read_schedule ->  nfs_direct_complete
   and in nfs_direct_wait
- on error path only first put occured
The same problem occures on direct_write path

Mainstream patch version from Trond Myklebust <>:
The current code is leaking a reference to dreq->kref when the calls to
nfs_direct_read_schedule() and nfs_direct_write_schedule() return an

Thanks to Denis V. Lunev for spotting the bug and proposing the original

Signed-off-by: Trond Myklebust <>
Signed-off-by: Kirill Korotaev <>
Signed-off-by: Pavel Emelianov <>

7 years ago[PATCH] nfs: oops during LTP over NFS (direct io)
Denis Lunev [Fri, 8 Jun 2007 14:42:06 +0000]
[PATCH] nfs: oops during LTP over NFS (direct io)

Problem reported by Denis Lunev and QA, fix from mainstream

Incorrect comparison of "int" and "unsigned int" variables is fixed
in nfs_direct_read_schedule and nfs_direct_write_schedule.

Bug #81589

7 years ago[PATCH] Fix powerpc compilation which was broken in
Kirill Korotaev [Fri, 8 Jun 2007 14:41:18 +0000]
[PATCH] Fix powerpc compilation which was broken in

Christian Kaiser reported broken powerpc compilation due to fix:
(git id f102c840f7f72492a83c93fa65396fe0edcf1df6)

In file included from drivers/media/video/pwc/pwc-uncompress.c:29:
  include/asm/current.h: In function get_current:
  include/asm/current.h:23: warning: implicit declaration of function offsetof
  include/asm/current.h:23: error: expected expression before struct
  make[4]: *** [drivers/media/video/pwc/pwc-uncompress.o] Error 1
  make[3]: *** [drivers/media/video/pwc] Error 2
  make[2]: *** [drivers/media/video] Error 2
  make[1]: *** [drivers/media] Error 2
  make: *** [drivers] Error 2

7 years agoFix SBUS compilation on SPARC64.
Kirill Korotaev [Fri, 8 Jun 2007 14:40:17 +0000]
Fix SBUS compilation on SPARC64.

asm/unistd.h should be included for _syscallX() define usage.

7 years ago[PATCH] PI futex oops (mainstream)
Alexey Kuznetsov [Fri, 8 Jun 2007 14:39:22 +0000]
[PATCH] PI futex oops (mainstream)

Serialization in PI futexes is severely broken, lots of bugs, lots.
But only one is known which crashes kernel.

It is possible that new pi state isadded to pi_state_list
after the task did exit cleanup already. So that, when task
struct is released pi_state list remains in corrupted state.

Locally exploitable.

7 years ago[SLAB] cache_reap() function must be binded, or take into account vcpus
Alexandr Andreev [Fri, 8 Jun 2007 14:38:23 +0000]
[SLAB] cache_reap() function must be binded, or take into account vcpus

It must pass actual (up-to-dated) numa node id to drain_cache() aftre cond-resched.

7 years ago[PATCH] ext3: orphan list corruption on bad inodes (v2)
Vasily Averin [Fri, 8 Jun 2007 14:37:16 +0000]
[PATCH] ext3: orphan list corruption on bad inodes (v2)

Changes to previous patch:
  instead of fixing ext3_unlink() better fix all the paths
  were bad inode can be found and used, i.e. lookup() and get_parent()

7 years ago[PATCH] ext3: orphan list corruption on bad inodes
Vasily Averin [Fri, 8 Jun 2007 14:36:18 +0000]
[PATCH] ext3: orphan list corruption on bad inodes
This patch fixes ext3 orphan list corruption due to bad inodes
created in ext3_read_inode().

Trying to catch orhpan list corruption in OpenVZ we found
the following debug messages in the logs:

May 30 10:39:38 df-rs-l24 kernel:
 EXT3-fs warning (device sda6): ext3_unlink: Deleting nonexistent file (37901290), 0
 Inode 00000101a15b7840: orphan list check failed!
 00000773 6f665f00 74616d72 00000573 65725f00 06737270 66000000 616d726f
 Call Trace: [<ffffffff80211ea9>] ext3_destroy_inode+0x79/0x90
  [<ffffffff801a2b16>] sys_unlink+0x126/0x1a0
  [<ffffffff80111479>] error_exit+0x0/0x81
  [<ffffffff80110aba>] system_call+0x7e/0x83

first messages says that unlinked inode has i_nlink=0,
then ext3_unlink() adds this inode into orphan list.

second message means that this inode has not been removed from orphan list, and
inode dump shows that i_fop = &bad_file_ops

Then I've discovered that bad_file_ops can be set only in make_bad_inode().
ext3_read_inode() can call make_bad_inode() without any
error/warning messages in the following case:
        if (inode->i_nlink == 0) {
                if (inode->i_mode == 0 ||
                    !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ORPHAN_FS)) {
                        /* this inode is deleted */
                        brelse (bh);
                        goto bad_inode;

i.e when
   inode->i_nlink == 0
   !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ORPHAN_FS)

Bad inode can live some time, ext3_unlink can add it to orphan list then,
but ext3_delete_inode() doesn't delete this inode from orphan list,
since inode is bad. As a result we have orphan list corruption
detected in ext3_destroy_inode().

This issue present in rhel4/rhel5/mainstream kernels too.

Bug #83419