From f76e4efc30ed2676bf04130485e0210d821e06b9 Mon Sep 17 00:00:00 2001
From: johann <johann>
Date: Tue, 16 Sep 2008 12:09:57 +0000
Subject: [PATCH] Branch b1_6 b=17024 i=shadow i=bobijam

Description: Lustre GPF in {:ptlrpc:ptlrpc_server_free_request+373}
Details    : In case of memory pressure, list_del() can be called twice on
	     req->rq_history_list, causing a kernel oops.
---
 lustre/ChangeLog        | 8 +++++++-
 lustre/ptlrpc/service.c | 2 +-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/lustre/ChangeLog b/lustre/ChangeLog
index 57c7806ad7..fd07e8434d 100644
--- a/lustre/ChangeLog
+++ b/lustre/ChangeLog
@@ -643,7 +643,7 @@ Details    : ptlrpc_at_recv_early_reply() should not modify req->rq_repmsg
 	     rq_lock held.
 
 Severity   : normal
-Frequency  : only X2
+Frequency  : only on Cray X2
 Bugzilla   : 16813
 Description: X2 build failures
 Details    : fix build failures on Cray X2.
@@ -655,6 +655,12 @@ Description: oops in statahead
 Details    : Disable statahead on systems with CONFIG_SLUB enabled, until
 	     such a time as problem is understood.
 
+Severity   : major
+Bugzilla   : 17024
+Description: Lustre GPF in {:ptlrpc:ptlrpc_server_free_request+373}
+Details    : In case of memory pressure, list_del() can be called twice on
+	     req->rq_history_list, causing a kernel oops.
+
 -------------------------------------------------------------------------------
 
 
diff --git a/lustre/ptlrpc/service.c b/lustre/ptlrpc/service.c
index 3fbfc44ffe..59cfe9799e 100644
--- a/lustre/ptlrpc/service.c
+++ b/lustre/ptlrpc/service.c
@@ -484,7 +484,7 @@ static void ptlrpc_server_free_request(struct ptlrpc_request *req)
         } else if (req->rq_reply_state && req->rq_reply_state->rs_prealloc) {
                  /* If we are low on memory, we are not interested in
                     history */
-                list_del(&req->rq_history_list);
+                list_del_init(&req->rq_history_list);
                 __ptlrpc_server_free_request(req);
         }
 
-- 
GitLab