All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc-Christian Petersen <m.c.p@wolk-project.de>
To: linux-kernel@vger.kernel.org
Cc: Andrea Arcangeli <andrea@suse.de>, Rik van Riel <riel@redhat.com>
Subject: Re: 2.6.5-rc1-aa1
Date: Sat, 20 Mar 2004 17:36:45 +0100	[thread overview]
Message-ID: <200403201736.45804@WOLK> (raw)
In-Reply-To: <20040320163132.GV9009@dualathlon.random>

[-- Attachment #1: Type: text/plain, Size: 258 bytes --]

On Saturday 20 March 2004 17:31, Andrea Arcangeli wrote:

Hi Andrea,

> > It's in the RHEL3 kernel, a patch named linux-2.4.21-mlock.patch.
> could somebody submit it to me too? ;) otherwise I'll have to search for
> some big rpm.

there you go.

ciao, Marc

[-- Attachment #2: linux-2.4.21-mlock.patch --]
[-- Type: text/x-diff, Size: 15619 bytes --]

diff -urNp linux-1040/include/asm-alpha/resource.h linux-1050/include/asm-alpha/resource.h
--- linux-1040/include/asm-alpha/resource.h	2000-09-27 16:39:23.000000000 -0400
+++ linux-1050/include/asm-alpha/resource.h	
@@ -39,7 +39,7 @@
     {INR_OPEN, INR_OPEN},			/* RLIMIT_NOFILE */	\
     {LONG_MAX, LONG_MAX},			/* RLIMIT_AS */		\
     {LONG_MAX, LONG_MAX},			/* RLIMIT_NPROC */	\
-    {LONG_MAX, LONG_MAX},			/* RLIMIT_MEMLOCK */	\
+    {PAGE_SIZE,PAGE_SIZE},			/* RLIMIT_MEMLOCK */	\
     {LONG_MAX, LONG_MAX},                       /* RLIMIT_LOCKS */      \
 }
 
diff -urNp linux-1040/include/asm-arm/resource.h linux-1050/include/asm-arm/resource.h
--- linux-1040/include/asm-arm/resource.h	2000-09-22 17:21:19.000000000 -0400
+++ linux-1050/include/asm-arm/resource.h	
@@ -37,7 +37,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },	\
 	{ 0,             0             },	\
 	{ INR_OPEN,      INR_OPEN      },	\
-	{ RLIM_INFINITY, RLIM_INFINITY },	\
+	{ PAGE_SIZE,     PAGE_SIZE     },	\
 	{ RLIM_INFINITY, RLIM_INFINITY },	\
 	{ RLIM_INFINITY, RLIM_INFINITY },	\
 }
diff -urNp linux-1040/include/asm-cris/resource.h linux-1050/include/asm-cris/resource.h
--- linux-1040/include/asm-cris/resource.h	2001-02-08 19:32:44.000000000 -0500
+++ linux-1050/include/asm-cris/resource.h	
@@ -37,7 +37,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },               \
+	{     PAGE_SIZE,     PAGE_SIZE },		\
         { RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-i386/resource.h linux-1050/include/asm-i386/resource.h
--- linux-1040/include/asm-i386/resource.h	2000-09-22 17:21:19.000000000 -0400
+++ linux-1050/include/asm-i386/resource.h	
@@ -37,7 +37,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
         { RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-ia64/resource.h linux-1050/include/asm-ia64/resource.h
--- linux-1040/include/asm-ia64/resource.h	2000-09-22 17:21:19.000000000 -0400
+++ linux-1050/include/asm-ia64/resource.h	
@@ -40,7 +40,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-m68k/resource.h linux-1050/include/asm-m68k/resource.h
--- linux-1040/include/asm-m68k/resource.h	
+++ linux-1050/include/asm-m68k/resource.h	
@@ -37,7 +37,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
         { RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-mips/resource.h linux-1050/include/asm-mips/resource.h
--- linux-1040/include/asm-mips/resource.h	2001-07-02 16:56:40.000000000 -0400
+++ linux-1050/include/asm-mips/resource.h	
@@ -44,7 +44,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ 0,             0             },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
 
diff -urNp linux-1040/include/asm-mips64/resource.h linux-1050/include/asm-mips64/resource.h
--- linux-1040/include/asm-mips64/resource.h	2001-09-09 13:43:02.000000000 -0400
+++ linux-1050/include/asm-mips64/resource.h	
@@ -45,7 +45,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ 0,             0             },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{ PAGE_SIZE,     PAGE_SIZE     },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
 
diff -urNp linux-1040/include/asm-parisc/resource.h linux-1050/include/asm-parisc/resource.h
--- linux-1040/include/asm-parisc/resource.h	2000-12-05 15:29:39.000000000 -0500
+++ linux-1050/include/asm-parisc/resource.h	
@@ -37,7 +37,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-ppc/resource.h linux-1050/include/asm-ppc/resource.h
--- linux-1040/include/asm-ppc/resource.h	
+++ linux-1050/include/asm-ppc/resource.h	
@@ -34,7 +34,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-ppc64/mman.h linux-1050/include/asm-ppc64/mman.h
--- linux-1040/include/asm-ppc64/mman.h	
+++ linux-1050/include/asm-ppc64/mman.h	
@@ -20,6 +20,7 @@
 #define MAP_ANONYMOUS	0x20		/* don't use a file */
 #define MAP_RENAME      MAP_ANONYMOUS   /* In SunOS terminology */
 #define MAP_NORESERVE   0x40            /* don't reserve swap pages */
+#define MAP_LOCKED	0x80
 
 #define MAP_GROWSDOWN	0x0100		/* stack-like segment */
 #define MAP_DENYWRITE	0x0800		/* ETXTBSY */
diff -urNp linux-1040/include/asm-ppc64/resource.h linux-1050/include/asm-ppc64/resource.h
--- linux-1040/include/asm-ppc64/resource.h	
+++ linux-1050/include/asm-ppc64/resource.h	
@@ -43,7 +43,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-s390/resource.h linux-1050/include/asm-s390/resource.h
--- linux-1040/include/asm-s390/resource.h	2001-02-13 17:13:44.000000000 -0500
+++ linux-1050/include/asm-s390/resource.h	
@@ -45,7 +45,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{ INR_OPEN, INR_OPEN },                         \
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-s390x/resource.h linux-1050/include/asm-s390x/resource.h
--- linux-1040/include/asm-s390x/resource.h	2001-02-13 17:13:44.000000000 -0500
+++ linux-1050/include/asm-s390x/resource.h	
@@ -45,7 +45,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{        0,        0 },                  	\
 	{ INR_OPEN, INR_OPEN },                         \
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-sh/resource.h linux-1050/include/asm-sh/resource.h
--- linux-1040/include/asm-sh/resource.h	2000-09-22 17:21:21.000000000 -0400
+++ linux-1050/include/asm-sh/resource.h	
@@ -37,7 +37,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/asm-sparc/resource.h linux-1050/include/asm-sparc/resource.h
--- linux-1040/include/asm-sparc/resource.h	2000-10-10 13:33:52.000000000 -0400
+++ linux-1050/include/asm-sparc/resource.h	
@@ -42,7 +42,7 @@
     {       0, RLIM_INFINITY},		\
     {RLIM_INFINITY, RLIM_INFINITY},	\
     {INR_OPEN, INR_OPEN}, {0, 0},	\
-    {RLIM_INFINITY, RLIM_INFINITY},	\
+    {PAGE_SIZE,     PAGE_SIZE },	\
     {RLIM_INFINITY, RLIM_INFINITY},	\
     {RLIM_INFINITY, RLIM_INFINITY}	\
 }
diff -urNp linux-1040/include/asm-sparc64/resource.h linux-1050/include/asm-sparc64/resource.h
--- linux-1040/include/asm-sparc64/resource.h	2000-10-10 13:33:52.000000000 -0400
+++ linux-1050/include/asm-sparc64/resource.h	
@@ -41,7 +41,7 @@
     {       0, RLIM_INFINITY},		\
     {RLIM_INFINITY, RLIM_INFINITY},	\
     {INR_OPEN, INR_OPEN}, {0, 0},	\
-    {RLIM_INFINITY, RLIM_INFINITY},	\
+    {PAGE_SIZE,     PAGE_SIZE },	\
     {RLIM_INFINITY, RLIM_INFINITY},	\
     {RLIM_INFINITY, RLIM_INFINITY}	\
 }
diff -urNp linux-1040/include/asm-x86_64/resource.h linux-1050/include/asm-x86_64/resource.h
--- linux-1040/include/asm-x86_64/resource.h	
+++ linux-1050/include/asm-x86_64/resource.h	
@@ -37,7 +37,7 @@
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
 	{             0,             0 },		\
 	{      INR_OPEN,     INR_OPEN  },		\
-	{ RLIM_INFINITY, RLIM_INFINITY },		\
+	{     PAGE_SIZE,     PAGE_SIZE },		\
 	{ RLIM_INFINITY, RLIM_INFINITY },		\
         { RLIM_INFINITY, RLIM_INFINITY },		\
 }
diff -urNp linux-1040/include/linux/mm.h linux-1050/include/linux/mm.h
--- linux-1040/include/linux/mm.h	
+++ linux-1050/include/linux/mm.h	
@@ -597,7 +597,7 @@ extern void clear_page_tables(struct mm_
 extern int fail_writepage(struct page *);
 struct page * shmem_nopage(struct vm_area_struct * vma, unsigned long address, int unused);
 struct file *shmem_file_setup(char * name, loff_t size);
-extern void shmem_lock(struct file * file, int lock);
+extern int shmem_lock(struct file * file, int lock);
 extern int shmem_zero_setup(struct vm_area_struct *);
 
 extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size);
@@ -701,6 +701,17 @@ static inline int can_vma_merge(struct v
 		return 0;
 }
 
+/* mlock can just return an instant EPERM if the caller has no
+   permission to do any memory locking. */
+static inline int can_do_mlock(void)
+{
+	if (capable(CAP_IPC_LOCK))
+		return 1;
+	if (current->rlim[RLIMIT_MEMLOCK].rlim_cur != 0)
+		return 1;
+	return 0;
+}
+
 struct zone_t;
 /* filemap.c */
 extern void remove_inode_page(struct page *);
diff -urNp linux-1040/ipc/shm.c linux-1050/ipc/shm.c
--- linux-1040/ipc/shm.c	
+++ linux-1050/ipc/shm.c	
@@ -457,12 +457,9 @@ asmlinkage long sys_shmctl (int shmid, i
 	case SHM_LOCK:
 	case SHM_UNLOCK:
 	{
-/* Allow superuser to lock segment in memory */
-/* Should the pages be faulted in here or leave it to user? */
-/* need to determine interaction with current->swappable */
-		if (!capable(CAP_IPC_LOCK))
+		/* Allow superuser to lock segment in memory */
+		if (!can_do_mlock())
 			return -EPERM;
-
 		shp = shm_lock(shmid);
 		if(shp==NULL)
 			return -EINVAL;
@@ -470,8 +467,9 @@ asmlinkage long sys_shmctl (int shmid, i
 		if(err)
 			goto out_unlock;
 		if(cmd==SHM_LOCK) {
-			shmem_lock(shp->shm_file, 1);
-			shp->shm_flags |= SHM_LOCKED;
+			err = shmem_lock(shp->shm_file, 1);
+			if (!err)
+				shp->shm_flags |= SHM_LOCKED;
 		} else {
 			shmem_lock(shp->shm_file, 0);
 			shp->shm_flags &= ~SHM_LOCKED;
diff -urNp linux-1040/mm/mlock.c linux-1050/mm/mlock.c
--- linux-1040/mm/mlock.c	
+++ linux-1050/mm/mlock.c	
@@ -151,7 +151,7 @@ static int do_mlock(unsigned long start,
 	struct vm_area_struct * vma, * next;
 	int error;
 
-	if (on && !capable(CAP_IPC_LOCK))
+	if (on && !can_do_mlock())
 		return -EPERM;
 	len = PAGE_ALIGN(len);
 	end = start + len;
@@ -210,12 +210,12 @@ asmlinkage long sys_mlock(unsigned long 
 	lock_limit >>= PAGE_SHIFT;
 
 	/* check against resource limits */
-	if (locked > lock_limit)
+	if (locked > lock_limit && !capable(CAP_IPC_LOCK))
 		goto out;
 
-	/* we may lock at most half of physical memory... */
+	/* we may lock at most 90% of physical memory... */
 	/* (this check is pretty bogus, but doesn't hurt) */
-	if (locked > num_physpages/2)
+	if (locked > num_physpages/10*9)
 		goto out;
 
 	error = do_mlock(start, len, 1);
@@ -245,7 +245,7 @@ static int do_mlockall(int flags)
 	unsigned int def_flags;
 	struct vm_area_struct * vma;
 
-	if (!capable(CAP_IPC_LOCK))
+	if (!can_do_mlock())
 		return -EPERM;
 
 	def_flags = 0;
@@ -282,12 +282,12 @@ asmlinkage long sys_mlockall(int flags)
 	lock_limit >>= PAGE_SHIFT;
 
 	ret = -ENOMEM;
-	if (current->mm->total_vm > lock_limit)
+	if (current->mm->total_vm > lock_limit && !capable(CAP_IPC_LOCK))
 		goto out;
 
-	/* we may lock at most half of physical memory... */
+	/* we may lock at most 90% of physical memory... */
 	/* (this check is pretty bogus, but doesn't hurt) */
-	if (current->mm->total_vm > num_physpages/2)
+	if (current->mm->total_vm > num_physpages/10*9)
 		goto out;
 
 	ret = do_mlockall(flags);
diff -urNp linux-1040/mm/mmap.c linux-1050/mm/mmap.c
--- linux-1040/mm/mmap.c	
+++ linux-1050/mm/mmap.c	
@@ -518,11 +518,16 @@ unsigned long do_mmap_pgoff(struct file 
 	 */
 	vm_flags = calc_vm_flags(prot,flags) | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
 
+	if (flags & MAP_LOCKED)
+		vm_flags |= VM_LOCKED;
+
 	/* mlock MCL_FUTURE? */
 	if (vm_flags & VM_LOCKED) {
-		unsigned long locked = mm->locked_vm << PAGE_SHIFT;
+		unsigned long locked, lock_limit;
+		locked = mm->locked_vm << PAGE_SHIFT;
+		lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;
 		locked += len;
-		if (locked > current->rlim[RLIMIT_MEMLOCK].rlim_cur)
+		if (locked > lock_limit && !capable(CAP_IPC_LOCK))
 			return -EAGAIN;
 	}
 
@@ -1261,9 +1266,11 @@ unsigned long do_brk(unsigned long addr,
 	 * mlock MCL_FUTURE?
 	 */
 	if (mm->def_flags & VM_LOCKED) {
-		unsigned long locked = mm->locked_vm << PAGE_SHIFT;
+		unsigned long locked, lock_limit;
+		locked = mm->locked_vm << PAGE_SHIFT;
+		lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;
 		locked += len;
-		if (locked > current->rlim[RLIMIT_MEMLOCK].rlim_cur)
+		if (locked > lock_limit && !capable(CAP_IPC_LOCK))
 			return -EAGAIN;
 	}
 
diff -urNp linux-1040/mm/mremap.c linux-1050/mm/mremap.c
--- linux-1040/mm/mremap.c	
+++ linux-1050/mm/mremap.c	
@@ -345,10 +345,12 @@ unsigned long do_mremap(unsigned long ad
 			goto out;
 	}
 	if (vma->vm_flags & VM_LOCKED) {
-		unsigned long locked = current->mm->locked_vm << PAGE_SHIFT;
+		unsigned long locked, lock_limit;
+		locked = current->mm->locked_vm << PAGE_SHIFT;
+		lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;
 		locked += new_len - old_len;
 		ret = -EAGAIN;
-		if (locked > current->rlim[RLIMIT_MEMLOCK].rlim_cur)
+		if (locked > lock_limit && !capable(CAP_IPC_LOCK))
 			goto out;
 	}
 	ret = -ENOMEM;
diff -urNp linux-1040/mm/shmem.c linux-1050/mm/shmem.c
--- linux-1040/mm/shmem.c	
+++ linux-1050/mm/shmem.c	
@@ -709,14 +709,35 @@ struct page * shmem_nopage(struct vm_are
 	return(page);
 }
 
-void shmem_lock(struct file * file, int lock)
+int shmem_lock(struct file * file, int lock)
 {
 	struct inode * inode = file->f_dentry->d_inode;
 	struct shmem_inode_info * info = SHMEM_I(inode);
+	struct mm_struct *mm = current->mm;
+	unsigned long lock_limit, locked;
+	int retval = -ENOMEM;
 
 	spin_lock(&info->lock);
+	if (lock && !info->locked) {
+		locked = inode->i_size >> PAGE_SHIFT;
+		locked += mm->locked_vm;
+		lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;
+		lock_limit >>= PAGE_SHIFT;
+		if (locked > lock_limit && !capable(CAP_IPC_LOCK))
+			goto out_nomem;
+		if (locked > num_physpages/10*9)
+			goto out_nomem;
+		mm->locked_vm = locked;
+	}
+	if (!lock && info->locked && mm) {
+		locked = inode->i_size >> PAGE_SHIFT;
+		mm->locked_vm -= locked;
+	}
 	info->locked = lock;
+	retval = 0;
+out_nomem:
 	spin_unlock(&info->lock);
+	return retval;
 }
 
 static int shmem_mmap(struct file * file, struct vm_area_struct * vma)

  reply	other threads:[~2004-03-20 16:38 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-18  2:22 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-18 15:32 ` 2.6.5-rc1-aa1 Rik van Riel
2004-03-18 15:53   ` 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-18 16:42   ` 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-18 16:49     ` 2.6.5-rc1-aa1 Rik van Riel
2004-03-18 20:15       ` 2.6.5-rc1-aa1 Diego Calleja García
2004-03-19  0:34         ` 2.6.5-rc1-aa1 Bill Davidsen
2004-03-19  1:51           ` 2.6.5-rc1-aa1 Diego Calleja García
2004-03-20 16:31       ` 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-20 16:36         ` Marc-Christian Petersen [this message]
2004-03-18 20:41 ` 2.6.5-rc1-aa1 Hugh Dickins
2004-03-18 23:06   ` 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-18 23:29     ` 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-19  0:49     ` 2.6.5-rc1-aa1 Paul Mackerras
2004-03-20 13:35     ` 2.6.5-rc1-aa1 Rik van Riel
2004-03-20 14:25       ` 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-18 22:14 ` 2.6.5-rc1-aa1 Andrea Arcangeli
2004-03-18 22:37   ` 2.6.5-rc1-aa1 Hugh Dickins
2004-03-18 23:09     ` 2.6.5-rc1-aa1 Andrea Arcangeli
     [not found] <Pine.GSO.4.58.0403181228360.24039@blue.engin.umich.edu>
2004-03-18 18:03 ` 2.6.5-rc1-aa1 Rik van Riel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200403201736.45804@WOLK \
    --to=m.c.p@wolk-project.de \
    --cc=andrea@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=riel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.