--- linux-2.6.9/mm/mlock.c.orig	2007-05-10 14:39:49.000000000 -0700
+++ linux-2.6.9/mm/mlock.c	2007-05-10 14:39:06.000000000 -0700
@@ -213,8 +213,10 @@
 	spin_lock(&shmlock_user_lock);
 	locked = size >> PAGE_SHIFT;
 	lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;
+	if (lock_limit == RLIM_INFINITY)
+		allowed = 1;
 	lock_limit >>= PAGE_SHIFT;
-	if (locked + user->locked_shm > lock_limit && !capable(CAP_IPC_LOCK))
+	if (!allowed  && locked + user->locked_shm > lock_limit && !capable(CAP_IPC_LOCK))
 		goto out;
 	get_uid(user);
 	user->locked_shm += locked;
