# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/02/12 00:47:38+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2005/02/12 00:47:32+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # arch/x86_64/ia32/ia32_binfmt.c # 2005/02/12 00:47:32+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2005/02/08 08:59:00+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2005/02/08 08:58:45+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2005/02/08 08:58:45+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # arch/x86_64/ia32/ia32_binfmt.c # 2005/02/08 08:58:45+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2005/01/22 11:06:38+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2005/01/22 11:06:29+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/22 11:06:29+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # fs/exec.c # 2005/01/22 11:06:29+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2005/01/15 01:19:29+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2005/01/15 01:19:19+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # kernel/fork.c # 2005/01/15 01:19:19+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/slab.h # 2005/01/15 01:19:19+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/15 01:19:19+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # fs/exec.c # 2005/01/15 01:19:19+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2005/01/10 12:59:22+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # mm/mremap.c # 2005/01/10 12:59:16+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # mm/mmap.c # 2005/01/10 12:59:16+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # kernel/fork.c # 2005/01/10 12:59:16+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/10 12:59:16+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # fs/exec.c # 2005/01/10 12:59:16+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2005/01/06 06:53:34+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # mm/mremap.c # 2005/01/06 06:53:28+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # mm/mmap.c # 2005/01/06 06:53:28+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # kernel/fork.c # 2005/01/06 06:53:27+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/06 06:53:27+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # fs/exec.c # 2005/01/06 06:53:27+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # arch/x86_64/ia32/ia32_binfmt.c # 2005/01/06 06:53:27+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2005/01/04 14:46:53+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # mm/mremap.c # 2005/01/04 14:46:47+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # mm/mprotect.c # 2005/01/04 14:46:47+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # mm/mmap.c # 2005/01/04 14:46:47+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # BitKeeper/deleted/.del-compat_exec.c~5f9e0c0b8a034dac # 2005/01/04 14:46:46+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2005/01/04 14:46:46+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # fs/exec.c # 2005/01/04 14:46:46+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # BitKeeper/deleted/.del-compat_exec.c~5f9e0c0b8a034dac # 2005/01/04 14:46:46+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Merge rename: arch/s390/kernel/compat_exec.c -> BitKeeper/deleted/.del-compat_exec.c~5f9e0c0b8a034dac # # ChangeSet # 2004/12/15 12:35:13+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # mm/mprotect.c # 2004/12/15 12:35:00+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # mm/mmap.c # 2004/12/15 12:35:00+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # fs/exec.c # 2004/12/15 12:35:00+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2004/12/07 18:30:24+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/12/07 18:30:08+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2004/11/26 15:12:00+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Auto merged # # fs/exec.c # 2004/11/26 15:11:48+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +2 -2 # Almost auto merged # # arch/x86_64/ia32/ia32_binfmt.c # 2004/11/26 15:11:48+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Almost auto merged # # arch/s390/kernel/compat_exec.c # 2004/11/26 15:11:48+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Almost auto merged # # mm/mmap.c # 2004/11/26 15:02:39+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2004/11/26 15:02:39+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2004/11/20 21:40:44+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Auto merged # # fs/exec.c # 2004/11/20 21:40:34+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # kernel/fork.c # 2004/11/20 21:33:15+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/slab.h # 2004/11/20 21:33:15+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # include/linux/mm.h # 2004/11/20 21:33:15+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2004/11/12 23:11:15+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Add localversion-vmaspy # # localversion-vmaspy # 2004/11/12 23:04:07+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +1 -0 # # localversion-vmaspy # 2004/11/12 23:04:07+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # BitKeeper file /exports/bk/vmaspy-2.6/localversion-vmaspy # # ChangeSet # 2004/11/12 14:30:32+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Add Brice Goglin notices. # # mm/mmap.c # 2004/11/12 14:30:18+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +2 -0 # Add Brice Goglin # # kernel/fork.c # 2004/11/12 14:30:18+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +2 -0 # Add Brice Goglin # # include/linux/mm.h # 2004/11/12 14:30:18+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +2 -1 # Add Brice Goglin # # ChangeSet # 2004/11/12 10:27:09+01:00 bgoglin@macvin.cri2000.ens-lyon.fr # Merge http://linux.bkbits.net/linux-2.5 # into macvin.cri2000.ens-lyon.fr:/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/11/12 10:27:04+01:00 bgoglin@macvin.cri2000.ens-lyon.fr +0 -0 # Auto merged # # ChangeSet # 2004/10/31 15:38:39+01:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/10/31 15:38:29+01:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # kernel/fork.c # 2004/10/31 15:38:29+01:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/10/31 15:38:29+01:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/10/31 15:38:29+01:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/10/21 11:12:23+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/10/21 11:12:17+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/slab.h # 2004/10/21 11:12:17+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/10/21 11:12:17+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/10/21 11:12:17+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/10/20 14:50:02+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mremap.c # 2004/10/20 14:49:52+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # mm/mprotect.c # 2004/10/20 14:49:52+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # mm/mmap.c # 2004/10/20 14:49:52+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # kernel/fork.c # 2004/10/20 14:49:52+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/10/20 14:49:52+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/10/20 14:49:52+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # arch/x86_64/ia32/ia32_binfmt.c # 2004/10/20 14:49:51+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/10/18 20:54:01+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/10/18 20:53:54+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/10/10 15:35:49+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/10/10 15:35:45+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/10/01 22:05:17+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/10/01 22:05:09+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/09/23 16:23:46+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/09/23 16:23:41+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/09/20 01:49:48+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # fs/exec.c # 2004/09/20 01:49:40+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/09/17 06:21:29+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/09/17 06:21:24+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/slab.h # 2004/09/17 06:21:24+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/09/17 06:21:24+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/09/05 05:46:35+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/09/05 05:46:30+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/slab.h # 2004/09/05 05:46:30+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/09/05 05:46:30+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/09/03 01:07:31+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/09/03 01:07:26+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/09/01 19:16:12+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/09/01 19:16:08+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/slab.h # 2004/09/01 19:16:08+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/09/01 19:16:07+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/31 05:19:00+02:00 bgoglin@macvin.(none) # Merge # # mm/mmap.c # 2004/08/31 05:18:58+02:00 bgoglin@macvin.(none) +0 -0 # SCCS merged # # mm/mremap.c # 2004/08/30 17:49:42+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # mm/mprotect.c # 2004/08/30 17:49:42+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # kernel/fork.c # 2004/08/30 17:49:41+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/slab.h # 2004/08/30 17:49:41+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/08/30 17:49:41+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/08/30 17:49:41+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # arch/x86_64/ia32/ia32_binfmt.c # 2004/08/30 17:49:41+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # arch/s390/kernel/compat_exec.c # 2004/08/30 17:49:41+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/02 01:57:11+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mprotect.c # 2004/08/02 01:57:03+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # mm/mmap.c # 2004/08/02 01:57:03+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # kernel/fork.c # 2004/08/02 01:57:03+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/08/02 01:57:03+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/08/02 01:57:03+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/30 13:37:41+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/06/30 13:37:36+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/06/30 13:37:36+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/28 12:35:51+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # include/linux/mm.h # 2004/06/28 12:35:46+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/06/28 12:35:45+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/23 22:10:50+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/06/23 22:10:45+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/19 05:20:22+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mremap.c # 2004/06/19 05:20:17+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # mm/mprotect.c # 2004/06/19 05:20:17+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # mm/mmap.c # 2004/06/19 05:20:16+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/06/19 05:20:16+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/14 08:06:32+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/06/14 08:06:27+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/10 16:56:38+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/06/10 16:56:32+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/05 23:59:53+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/06/05 23:59:48+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/06/04 11:04:06+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/06/04 11:03:59+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/06/04 11:03:59+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/31 23:22:13+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # fs/exec.c # 2004/05/31 23:22:03+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/25 23:41:03+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mmap.c # 2004/05/25 23:40:57+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/05/25 23:40:56+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/24 21:49:16+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/05/24 21:48:54+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/24 11:35:32+02:00 bgoglin@macvin.(none) # merge with 2.6.7-rc1 (anon_vma) # # mm/mprotect.c # 2004/05/24 11:35:25+02:00 bgoglin@macvin.(none) +0 -0 # initialize vma spy # # mm/mmap.c # 2004/05/24 11:35:25+02:00 bgoglin@macvin.(none) +9 -0 # initialize vma spy # # kernel/fork.c # 2004/05/24 11:35:25+02:00 bgoglin@macvin.(none) +4 -7 # initialize vma spy # use SLAB_PANIC in kmem_cache_create # # fs/exec.c # 2004/05/24 11:35:25+02:00 bgoglin@macvin.(none) +2 -0 # initialize vma spy # # arch/x86_64/ia32/ia32_binfmt.c # 2004/05/24 11:35:25+02:00 bgoglin@macvin.(none) +2 -0 # initialize vma spy # # arch/s390/kernel/compat_exec.c # 2004/05/24 11:35:25+02:00 bgoglin@macvin.(none) +2 -0 # initialize vma spy # # mm/mremap.c # 2004/05/23 09:36:55+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/slab.h # 2004/05/23 09:36:54+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/05/23 09:36:54+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/20 11:44:55+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # include/linux/slab.h # 2004/05/20 11:44:50+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/17 17:45:00+02:00 bgoglin@macvin.(none) # Fix broken notify_vma_spy_unmap parameter # # mm/mmap.c # 2004/05/17 17:44:39+02:00 bgoglin@macvin.(none) +1 -2 # Fix broken notify_vma_spy_unmap parameter # # ChangeSet # 2004/05/16 13:46:44+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # mm/mprotect.c # 2004/05/16 13:46:38+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # kernel/fork.c # 2004/05/16 13:46:38+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/05/16 13:46:38+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # arch/s390/kernel/compat_exec.c # 2004/05/16 13:46:38+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/11 08:11:32+02:00 bgoglin@macvin.(none) # Merge http://linux.bkbits.net/linux-2.5 # into macvin.(none):/exports/bk/vmaspy-2.6 # # kernel/fork.c # 2004/05/11 08:11:16+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/05 19:26:26+02:00 bgoglin@macvin.(none) # Initialize VMA Spy list in copy_vma # TAG: vmaspy-2.6.6-rc3 # # mm/mmap.c # 2004/05/05 19:26:15+02:00 bgoglin@macvin.(none) +2 -0 # Initialize VMA Spy list # # ChangeSet # 2004/05/05 16:51:19+02:00 bgoglin@macvin.(none) # Remove VMA Spy form mremap.c before adding to copy_vma # # mm/mremap.c # 2004/05/05 16:51:09+02:00 bgoglin@macvin.(none) +0 -5 # Remove VMA Spy before adding to copy_vma # # ChangeSet # 2004/05/05 16:42:06+02:00 bgoglin@macvin.(none) # Remove mremap modifications before moving them into copy_vma # # mm/mprotect.c # 2004/05/05 14:59:35+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # mm/mmap.c # 2004/05/05 14:59:35+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # kernel/fork.c # 2004/05/05 14:59:35+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/slab.h # 2004/05/05 14:59:35+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # include/linux/mm.h # 2004/05/05 14:59:34+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # fs/exec.c # 2004/05/05 14:59:34+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # arch/x86_64/ia32/ia32_binfmt.c # 2004/05/05 14:59:34+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # arch/s390/kernel/compat_exec.c # 2004/05/05 14:59:34+02:00 bgoglin@macvin.(none) +0 -0 # Auto merged # # ChangeSet # 2004/05/05 14:34:49+02:00 bgoglin@macvin.(none) # Add VMA Spy infrastructure # # mm/mremap.c # 2004/05/05 14:29:09+02:00 bgoglin@macvin.(none) +5 -0 # Initialize VMA Spy list # Notify VMA Spy merge # # mm/mprotect.c # 2004/05/05 14:29:09+02:00 bgoglin@macvin.(none) +2 -0 # Notify VMA Spy merge # # mm/mmap.c # 2004/05/05 14:29:08+02:00 bgoglin@macvin.(none) +12 -0 # Initialize VMA Spy list # Notify VMA Spy merge, split, unmap, unregister # # kernel/fork.c # 2004/05/05 14:29:08+02:00 bgoglin@macvin.(none) +83 -0 # Initialize VMA Spy list # Notify VMA Spy fork # Add VMA Spy cache # Add VMA Spy functions # # include/linux/slab.h # 2004/05/05 14:29:08+02:00 bgoglin@macvin.(none) +1 -0 # VMA Spy cache # # include/linux/mm.h # 2004/05/05 14:29:08+02:00 bgoglin@macvin.(none) +93 -0 # Add VMA Spy list to VMA structure # Add VMA Spy type # Add VMA Spy # Add VMA Spy inline functions # # fs/exec.c # 2004/05/05 14:29:08+02:00 bgoglin@macvin.(none) +2 -0 # Initialize VMA Spy list # # arch/x86_64/ia32/ia32_binfmt.c # 2004/05/05 14:29:08+02:00 bgoglin@macvin.(none) +2 -0 # Initialize VMA Spy list # # arch/s390/kernel/compat_exec.c # 2004/05/05 14:29:08+02:00 bgoglin@macvin.(none) +2 -0 # Initialize VMA Spy list # diff -Nru a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c --- a/arch/x86_64/ia32/ia32_binfmt.c 2005-03-02 10:06:22 +01:00 +++ b/arch/x86_64/ia32/ia32_binfmt.c 2005-03-02 10:06:22 +01:00 @@ -373,6 +373,8 @@ mpnt->vm_flags = VM_STACK_FLAGS; mpnt->vm_page_prot = (mpnt->vm_flags & VM_EXEC) ? PAGE_COPY_EXEC : PAGE_COPY; + INIT_LIST_HEAD(&mpnt->vm_spy_list); + spin_lock_init(&mpnt->vm_spy_lock); if ((ret = insert_vm_struct(mm, mpnt))) { up_write(&mm->mmap_sem); kmem_cache_free(vm_area_cachep, mpnt); diff -Nru a/fs/exec.c b/fs/exec.c --- a/fs/exec.c 2005-03-02 10:06:22 +01:00 +++ b/fs/exec.c 2005-03-02 10:06:22 +01:00 @@ -444,6 +444,8 @@ mpnt->vm_flags = VM_STACK_FLAGS; mpnt->vm_flags |= mm->def_flags; mpnt->vm_page_prot = protection_map[mpnt->vm_flags & 0x7]; + INIT_LIST_HEAD(&mpnt->vm_spy_list); + spin_lock_init(&mpnt->vm_spy_lock); if ((ret = insert_vm_struct(mm, mpnt))) { up_write(&mm->mmap_sem); kmem_cache_free(vm_area_cachep, mpnt); diff -Nru a/include/linux/mm.h b/include/linux/mm.h --- a/include/linux/mm.h 2005-03-02 10:06:22 +01:00 +++ b/include/linux/mm.h 2005-03-02 10:06:22 +01:00 @@ -100,6 +100,11 @@ /* Function pointers to deal with this struct. */ struct vm_operations_struct * vm_ops; + /* Driver that watch this vma may register their callbacks here */ + struct list_head vm_spy_list; + spinlock_t vm_spy_lock; +#define KERNEL_HAS_VMASPY + /* Information about our backing store: */ unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units, *not* PAGE_CACHE_SIZE */ @@ -204,6 +209,95 @@ unsigned long addr); #endif }; + +/* + * These structs define vma spy type and vma spy. + * Brice Goglin -- 2004-11-12 + */ +struct vma_spy_type { + void (*unmap) (struct vm_area_struct * area, unsigned long start, unsigned long end, void * data); + void (*fork) (struct vm_area_struct * area, void * data); + void * data; + struct list_head vma_list; + spinlock_t vma_lock; +}; + +struct vma_spy { + struct list_head spy_list; + struct list_head vma_list; + struct vm_area_struct * vma; + struct vma_spy_type * type; +}; + +/* add a vma_spy to the list in a vma and to the list in a vma_spy_type */ +extern struct vma_spy * register_vma_spy(struct vm_area_struct * area, struct vma_spy_type * type); + +/* return a vma_spy if a type is already spying a vma */ +static inline struct vma_spy * is_vma_spy_registered(struct vm_area_struct * area, struct vma_spy_type * type) +{ + struct vma_spy *spy; + spin_lock(&area->vm_spy_lock); + list_for_each_entry(spy, &area->vm_spy_list, spy_list) + if (spy->type == type ) { + spin_unlock(&area->vm_spy_lock); + return spy; + } + spin_unlock(&area->vm_spy_lock); + return NULL; +} + +/* remove all vma of a spy type */ +extern void unregister_vma_spy_type(struct vma_spy_type * type); + +/* called when a vma is removed, removes all its spy */ +extern void notify_vma_spy_unregister(struct vm_area_struct * area); + +/* called when area is partially or totally unmapped */ +static inline void notify_vma_spy_unmap(struct vm_area_struct * area, unsigned long start, unsigned long end) +{ + struct vma_spy *spy; + spin_lock(&area->vm_spy_lock); + list_for_each_entry(spy, &area->vm_spy_list, spy_list) + if (spy->type->unmap) + spy->type->unmap(area, start, end, spy->type->data); + spin_unlock(&area->vm_spy_lock); +} + +/* called when area is duplicated */ +static inline void notify_vma_spy_fork(struct vm_area_struct * area) +{ + struct vma_spy *spy; + spin_lock(&area->vm_spy_lock); + list_for_each_entry(spy, &area->vm_spy_list, spy_list) + if (spy->type->fork) + spy->type->fork(area, spy->type->data); + spin_unlock(&area->vm_spy_lock); +} + +/* called when old is splitted into old and new */ +static inline void notify_vma_spy_split(struct vm_area_struct * old, struct vm_area_struct * new) +{ + /* We should fill new list with old's one to ensure + * these pages will still be watched. + */ + + /* Instead we simply keep the new spy list empty + * and simulate unmapping. + */ + notify_vma_spy_unmap(new, new->vm_start, new->vm_end); +} + +/* called when old is merged into new */ +static inline void notify_vma_spy_merge(struct vm_area_struct * old, struct vm_area_struct * new) +{ + /* We should fill new list with old's one to ensure + * these pages will still be watched. + */ + + /* Instead we simply simulate unmapping */ + notify_vma_spy_unmap(old, old->vm_start, old->vm_end); + notify_vma_spy_unregister(old); +} struct mmu_gather; struct inode; diff -Nru a/include/linux/slab.h b/include/linux/slab.h --- a/include/linux/slab.h 2005-03-02 10:06:22 +01:00 +++ b/include/linux/slab.h 2005-03-02 10:06:22 +01:00 @@ -114,6 +114,7 @@ /* System wide caches */ extern kmem_cache_t *vm_area_cachep; +extern kmem_cache_t *vma_spy_cachep; extern kmem_cache_t *mm_cachep; extern kmem_cache_t *names_cachep; extern kmem_cache_t *files_cachep; diff -Nru a/kernel/fork.c b/kernel/fork.c --- a/kernel/fork.c 2005-03-02 10:06:22 +01:00 +++ b/kernel/fork.c 2005-03-02 10:06:22 +01:00 @@ -2,6 +2,8 @@ * linux/kernel/fork.c * * Copyright (C) 1991, 1992 Linus Torvalds + * + * 2004-11-12 Added vmaspy routines by Brice Goglin. */ /* @@ -209,6 +211,8 @@ tmp->vm_flags &= ~VM_LOCKED; tmp->vm_mm = mm; tmp->vm_next = NULL; + INIT_LIST_HEAD(&tmp->vm_spy_list); + spin_lock_init(&tmp->vm_spy_lock); anon_vma_link(tmp); file = tmp->vm_file; if (file) { @@ -226,6 +230,8 @@ spin_unlock(&file->f_mapping->i_mmap_lock); } + notify_vma_spy_fork(mpnt); + /* * Link in the new vma and copy the page table entries: * link in first so that swapoff can see swap entries, @@ -1198,6 +1204,9 @@ /* SLAB cache for vm_area_struct structures */ kmem_cache_t *vm_area_cachep; +/* SLAB cache for vma_spy structures */ +kmem_cache_t *vma_spy_cachep; + /* SLAB cache for mm_struct structures (tsk->mm) */ kmem_cache_t *mm_cachep; @@ -1218,7 +1227,80 @@ vm_area_cachep = kmem_cache_create("vm_area_struct", sizeof(struct vm_area_struct), 0, SLAB_PANIC, NULL, NULL); + vma_spy_cachep = kmem_cache_create("vma_spy", + sizeof(struct vma_spy), 0, + SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL, NULL); mm_cachep = kmem_cache_create("mm_struct", sizeof(struct mm_struct), 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL, NULL); } + +struct vma_spy * register_vma_spy(struct vm_area_struct * area, struct vma_spy_type * type) +{ + struct vma_spy *spy = kmem_cache_alloc(vma_spy_cachep, SLAB_KERNEL); + if ( !spy ) + return NULL; + spy->vma = area; + spy->type = type; + + /* area lock first */ + spin_lock(&area->vm_spy_lock); + spin_lock(&type->vma_lock); + + list_add_tail(&spy->spy_list, &area->vm_spy_list); + list_add_tail(&spy->vma_list, &type->vma_list); + + /* area unlock last */ + spin_unlock(&type->vma_lock); + spin_unlock(&area->vm_spy_lock); + + return spy; +} + +void notify_vma_spy_unregister(struct vm_area_struct * area) +{ + struct list_head *head, *next; + + /* area lock first */ + spin_lock(&area->vm_spy_lock); + + list_for_each_safe(head, next, &area->vm_spy_list) { + struct vma_spy *spy = list_entry(head, struct vma_spy, spy_list); + spin_lock(&spy->type->vma_lock); + list_del(head); + list_del(&spy->vma_list); + spin_unlock(&spy->type->vma_lock); + + kmem_cache_free(vma_spy_cachep, spy); + } + + /* area unlock last */ + spin_unlock(&area->vm_spy_lock); +} + +/* + * We assume the caller won't use this function while + * other vma are being added to this spy type. + * We thus do not hold the type->vma_lock. + * This prevents getting locks in the reverse order. + */ +void unregister_vma_spy_type(struct vma_spy_type *type) +{ + struct list_head *head, *next; + + /* no lock of &type->vma_lock */ + + list_for_each_safe(head, next, &type->vma_list) { + struct vma_spy *spy = list_entry(head, struct vma_spy, vma_list); + spin_lock(&spy->vma->vm_spy_lock); + list_del(head); + list_del(&spy->spy_list); + spin_unlock(&spy->vma->vm_spy_lock); + kmem_cache_free(vma_spy_cachep, spy); + } + + /* no unlock of &type->vma_lock */ +} + +EXPORT_SYMBOL(register_vma_spy); +EXPORT_SYMBOL(unregister_vma_spy_type); diff -Nru a/localversion-vmaspy b/localversion-vmaspy --- /dev/null Wed Dec 31 16:00:00 196900 +++ b/localversion-vmaspy 2005-03-02 10:06:22 +01:00 @@ -0,0 +1 @@ +-vmaspy diff -Nru a/mm/mmap.c b/mm/mmap.c --- a/mm/mmap.c 2005-03-02 10:06:22 +01:00 +++ b/mm/mmap.c 2005-03-02 10:06:22 +01:00 @@ -4,6 +4,8 @@ * Written by obz. * * Address space accounting code + * + * 2004-11-12 Added vmaspy hooks by Brice Goglin. */ #include @@ -741,6 +743,7 @@ /* cases 1, 6 */ vma_adjust(prev, prev->vm_start, next->vm_end, prev->vm_pgoff, NULL); + notify_vma_spy_merge(next, prev); } else /* cases 2, 5, 7 */ vma_adjust(prev, prev->vm_start, end, prev->vm_pgoff, NULL); @@ -1054,6 +1057,8 @@ vma->vm_flags = vm_flags; vma->vm_page_prot = protection_map[vm_flags & 0x0f]; vma->vm_pgoff = pgoff; + INIT_LIST_HEAD(&vma->vm_spy_list); + spin_lock_init(&vma->vm_spy_lock); if (file) { error = -EINVAL; @@ -1668,6 +1673,7 @@ area->vm_mm->locked_vm -= len >> PAGE_SHIFT; vm_stat_unaccount(area); area->vm_mm->unmap_area(area); + notify_vma_spy_unregister(area); remove_vm_struct(area); } @@ -1760,6 +1766,9 @@ /* most fields are the same, copy all, and then fixup */ *new = *vma; + INIT_LIST_HEAD(&new->vm_spy_list); + spin_lock_init(&new->vm_spy_lock); + notify_vma_spy_split(vma, new); if (new_below) new->vm_end = addr; else { @@ -1961,6 +1970,8 @@ vma->vm_pgoff = pgoff; vma->vm_flags = flags; vma->vm_page_prot = protection_map[flags & 0x0f]; + INIT_LIST_HEAD(&vma->vm_spy_list); + spin_lock_init(&vma->vm_spy_lock); vma_link(mm, vma, prev, rb_link, rb_parent); out: mm->total_vm += len >> PAGE_SHIFT; @@ -2012,6 +2023,8 @@ */ while (vma) { struct vm_area_struct *next = vma->vm_next; + notify_vma_spy_unmap(vma, vma->vm_start, vma->vm_end); + notify_vma_spy_unregister(vma); remove_vm_struct(vma); vma = next; } @@ -2090,6 +2103,8 @@ return NULL; } vma_set_policy(new_vma, pol); + INIT_LIST_HEAD(&new_vma->vm_spy_list); + spin_lock_init(&new_vma->vm_spy_lock); new_vma->vm_start = addr; new_vma->vm_end = addr + len; new_vma->vm_pgoff = pgoff;