2005-11-17 00:53:55

by Vince Busam

[permalink] [raw]
Subject: Funny looking code in __rpc_purge_upcall

In __rpc_purge_upcall (net/sunrpc/rpc_pipe.c), the newer code to clean up the in_upcall
list looks bad. Shouldn't the first argument to list_entry() be rpci->in_upcall.next?

--- net/sunrpc/rpc_pipe.c.orig 2005-11-16 16:48:00.000000000 -0800
+++ net/sunrpc/rpc_pipe.c 2005-11-16 16:52:23.000000000 -0800
@@ -51,7 +51,7 @@ __rpc_purge_upcall(struct inode *inode,
rpci->ops->destroy_msg(msg);
}
while (!list_empty(&rpci->in_upcall)) {
- msg = list_entry(rpci->pipe.next, struct rpc_pipe_msg, list);
+ msg = list_entry(rpci->in_upcall.next, struct rpc_pipe_msg, list);
list_del_init(&msg->list);
msg->errno = err;
rpci->ops->destroy_msg(msg);

Vince


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs


2005-11-17 03:10:21

by Trond Myklebust

[permalink] [raw]
Subject: Re: Funny looking code in __rpc_purge_upcall

On Wed, 2005-11-16 at 16:53 -0800, Vince Busam wrote:
> In __rpc_purge_upcall (net/sunrpc/rpc_pipe.c), the newer code to clean up the in_upcall
> list looks bad. Shouldn't the first argument to list_entry() be rpci->in_upcall.next?

Doh! Well spotted!

That might explain the rpc-pipe related cleanup problem that Steve
Dickson has reported on the list earlier...

Cheers,
Trond

> --- net/sunrpc/rpc_pipe.c.orig 2005-11-16 16:48:00.000000000 -0800
> +++ net/sunrpc/rpc_pipe.c 2005-11-16 16:52:23.000000000 -0800
> @@ -51,7 +51,7 @@ __rpc_purge_upcall(struct inode *inode,
> rpci->ops->destroy_msg(msg);
> }
> while (!list_empty(&rpci->in_upcall)) {
> - msg = list_entry(rpci->pipe.next, struct rpc_pipe_msg, list);
> + msg = list_entry(rpci->in_upcall.next, struct rpc_pipe_msg, list);
> list_del_init(&msg->list);
> msg->errno = err;
> rpci->ops->destroy_msg(msg);
>
> Vince
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
> Register for a JBoss Training Course. Free Certification Exam
> for All Training Attendees Through End of 2005. For more info visit:
> http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
> _______________________________________________
> NFS maillist - [email protected]
> https://lists.sourceforge.net/lists/listinfo/nfs



-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2005-11-17 16:01:32

by Steve Dickson

[permalink] [raw]
Subject: Re: Funny looking code in __rpc_purge_upcall

Trond Myklebust wrote:
> That might explain the rpc-pipe related cleanup problem that Steve
> Dickson has reported on the list earlier...
No go... :-( I just tried that patch and unfortunately it does
not stop the oops that you are referring to...

steved.


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs