All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] 9pnet: Use list_del_init when removing req_list elements
@ 2008-11-06  0:06 Tom Tucker
  0 siblings, 0 replies; only message in thread
From: Tom Tucker @ 2008-11-06  0:06 UTC (permalink / raw)
  To: Eric Van Hensbergen; +Cc: linux-kernel, v9fs-devel, Latchesar Ionkov

The p9_req_t structures are reused when tags are reused. For this reason,
the req_list list heads need to be re-initialized when deleted or a
subsequent list_add can corrupt the list and/or BUG_ON if list debug is
enabled.
    
Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
---
 net/9p/trans_fd.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
index 1df0356..fc78336 100644
--- a/net/9p/trans_fd.c
+++ b/net/9p/trans_fd.c
@@ -213,7 +213,7 @@ static void p9_conn_cancel(struct p9_conn *m, int err)
 	spin_unlock_irqrestore(&m->client->lock, flags);
 
 	list_for_each_entry_safe(req, rtmp, &cancel_list, req_list) {
-		list_del(&req->req_list);
+		list_del_init(&req->req_list);
 		P9_DPRINTK(P9_DEBUG_ERROR, "call back req %p\n", req);
 		p9_client_cb(m->client, req);
 	}
@@ -361,7 +361,7 @@ static void p9_read_work(struct work_struct *work)
 	if ((m->req) && (m->rpos == m->rsize)) { /* packet is read in */
 		P9_DPRINTK(P9_DEBUG_TRANS, "got new packet\n");
 		spin_lock(&m->client->lock);
-		list_del(&m->req->req_list);
+		list_del_init(&m->req->req_list);
 		spin_unlock(&m->client->lock);
 		p9_client_cb(m->client, m->req);
 
@@ -683,7 +683,7 @@ static int p9_fd_cancel(struct p9_client *client, struct p9_req_t *req)
 	P9_DPRINTK(P9_DEBUG_TRANS, "client %p req %p\n", client, req);
 
 	spin_lock(&client->lock);
-	list_del(&req->req_list);
+	list_del_init(&req->req_list);
 
 	if (req->status == REQ_STATUS_UNSENT) {
 		req->status = REQ_STATUS_FLSHD;


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2008-11-06  0:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-06  0:06 [PATCH] 9pnet: Use list_del_init when removing req_list elements Tom Tucker

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.