<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/sunrpc, branch linux-2.6.19.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2007-02-24T00:24:27Z</updated>
<entry>
<title>knfsd: Fix a race in closing NFSd connections.</title>
<updated>2007-02-24T00:24:27Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2007-02-07T00:10:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a805446f1f5152d55fe31043b364ad3e79c63b0a'/>
<id>urn:sha1:a805446f1f5152d55fe31043b364ad3e79c63b0a</id>
<content type='text'>
If you lose this race, it can iput a socket inode twice and you
get a BUG in fs/inode.c

When I added the option for user-space to close a socket,
I added some cruft to svc_delete_socket so that I could call
that function when closing a socket per user-space request.

This was the wrong thing to do.  I should have just set SK_CLOSE
and let normal mechanisms do the work.

Not only wrong, but buggy.  The locking is all wrong and it openned
up a race where-by a socket could be closed twice.

So this patch:
  Introduces svc_close_socket which sets SK_CLOSE then either leave
  the close up to a thread, or calls svc_delete_socket if it can
  get SK_BUSY.

  Adds a bias to sk_busy which is removed when SK_DEAD is set,
  This avoid races around shutting down the socket.

  Changes several 'spin_lock' to 'spin_lock_bh' where the _bh 
  was missing.

Bugzilla-url: http://bugzilla.kernel.org/show_bug.cgi?id=7916

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;


</content>
</entry>
<entry>
<title>[PATCH] SUNRPC: Give cloned RPC clients their own rpc_pipefs directory</title>
<updated>2007-02-05T16:31:45Z</updated>
<author>
<name>Trond Myklebust</name>
</author>
<published>2007-01-25T04:13:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=16a2980e7a2d9afe5b6c68c783d025036edcf70e'/>
<id>urn:sha1:16a2980e7a2d9afe5b6c68c783d025036edcf70e</id>
<content type='text'>
This patch fixes a regression in 2.6.19 in which the use of multiple
krb5 mounts against the same NFS server may result in an Oops on
unmount. The Oops is due to the fact that multiple NFS krb5 clients may
end up inadvertently sharing the same rpc_pipefs upcall pipe. The first
client to 'umount' will unlink that shared pipe, causing an Oops.

The solution is to give each client their own upcall pipe. This fix has
been in mainline since 2.6.20-rc1.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
[chrisw: backport to 2.6.19.2]
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: fix an NFSD bug with full sized, non-page-aligned reads.</title>
<updated>2007-02-05T16:31:43Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2007-01-25T04:35:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=79dab9e2b79871bdeb3ea23a882884a7a16d4c92'/>
<id>urn:sha1:79dab9e2b79871bdeb3ea23a882884a7a16d4c92</id>
<content type='text'>
NFSd assumes that largest number of pages that will be needed
for a request+response is 2+N where N pages is the size of the largest
permitted read/write request.  The '2' are 1 for the non-data part of
the request, and 1 for the non-data part of the reply.

However, when a read request is not page-aligned, and we choose to use
-&gt;sendfile to send it directly from the page cache, we may need N+1
pages to hold the whole reply.  This can overflow and array and cause
an Oops.

This patch increases size of the array for holding pages by one and
makes sure that entry is NULL when it is not in use.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: fix setting of ACL server versions.</title>
<updated>2007-02-05T16:31:43Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2007-01-25T04:35:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=65bd280c3e91096a291b77e5b2eed5a530851de7'/>
<id>urn:sha1:65bd280c3e91096a291b77e5b2eed5a530851de7</id>
<content type='text'>
Due to silly typos, if the nfs versions are explicitly set,
no NFSACL versions get enabled.

Also improve an error message that would have made this bug
a little easier to find.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] sunrpc: add missing spin_unlock</title>
<updated>2006-11-06T09:46:23Z</updated>
<author>
<name>Akinobu Mita</name>
</author>
<published>2006-11-06T07:52:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0c7bb31db0e35d4b772fac452b722460ca368acf'/>
<id>urn:sha1:0c7bb31db0e35d4b772fac452b722460ca368acf</id>
<content type='text'>
auth_domain_put() forgot to unlock acquired spinlock.

Cc: Olaf Kirch &lt;okir@monad.swb.de&gt;
Cc: Andy Adamson &lt;andros@citi.umich.edu&gt;
Cc: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Acked-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Akinobu Mita &lt;akinobu.mita@gmail.com&gt;
Cc: Neil Brown &lt;neilb@suse.de&gt;
Acked-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fix "sunrpc: fix refcounting problems in rpc servers"</title>
<updated>2006-10-30T20:12:21Z</updated>
<author>
<name>Andrew Morton</name>
</author>
<published>2006-10-30T06:57:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=202dd450246cd658e298a86dddca5592fcb898cd'/>
<id>urn:sha1:202dd450246cd658e298a86dddca5592fcb898cd</id>
<content type='text'>
- printk should remain dprintk

- fix coding-style.

Cc: Neil Brown &lt;neilb@suse.de&gt;
Cc: Trond Myklebust &lt;trond.myklebust@fys.uio.no&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] sunrpc: fix refcounting problems in rpc servers</title>
<updated>2006-10-30T20:08:42Z</updated>
<author>
<name>Neil Brown</name>
</author>
<published>2006-10-30T06:46:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d6740df98e12a8e49ef3a699dcc1e2913f22c51b'/>
<id>urn:sha1:d6740df98e12a8e49ef3a699dcc1e2913f22c51b</id>
<content type='text'>
A recent patch fixed a problem which would occur when the refcount on an
auth_domain reached zero.  This problem has not been reported in practice
despite existing in two major kernel releases because the refcount can
never reach zero.

This patch fixes the problems that stop the refcount reaching zero.

1/ We were adding to the refcount when inserting in the hash table,
   but only removing from the hashtable when the refcount reached zero.
   Obviously it never would.  So don't count the implied reference of
   being in the hash table.

2/ There are two paths on which a socket can be destroyed.  One called
   svcauth_unix_info_release().  The other didn't.  So when the other was
   taken, we can lose a reference to an ip_map which in-turn holds a
   reference to an auth_domain

   So unify the exit paths into svc_sock_put.  This highlights the fact
   that svc_delete_socket has slightly odd semantics - it does not drop
   a reference but probably should.  Fixing this need a bit more
   thought and testing.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Cc: Trond Myklebust &lt;trond.myklebust@fys.uio.no&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] knfsd: fix race that can disable NFS server</title>
<updated>2006-10-20T17:26:44Z</updated>
<author>
<name>NeilBrown</name>
</author>
<published>2006-10-20T06:29:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1a047060a99f274a7c52cfea8159e4142a14b8a7'/>
<id>urn:sha1:1a047060a99f274a7c52cfea8159e4142a14b8a7</id>
<content type='text'>
This patch is suitable for just about any 2.6 kernel.  It should go in
2.6.19 and 2.6.18.2 and possible even the .17 and .16 stable series.

This is a long standing bug that seems to have only recently become
apparent, presumably due to increasing use of NFS over TCP - many
distros seem to be making it the default.

The SK_CONN bit gets set when a listening socket may be ready
for an accept, just as SK_DATA is set when data may be available.

It is entirely possible for svc_tcp_accept to be called with neither
of these set.  It doesn't happen often but there is a small race in
svc_sock_enqueue as SK_CONN and SK_DATA are tested outside the
spin_lock.  They could be cleared immediately after the test and
before the lock is gained.

This normally shouldn't be a problem.  The sockets are non-blocking so
trying to read() or accept() when ther is nothing to do is not a problem.

However: svc_tcp_recvfrom makes the decision "Should I accept() or
should I read()" based on whether SK_CONN is set or not.  This usually
works but is not safe.  The decision should be based on whether it is
a TCP_LISTEN socket or a TCP_CONNECTED socket.

Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Cc: Adrian Bunk &lt;bunk@stusta.de&gt;
Cc: &lt;stable@kernel.org&gt;
Cc: Trond Myklebust &lt;trond.myklebust@fys.uio.no&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] SUNRPC: fix a typo</title>
<updated>2006-10-20T17:26:39Z</updated>
<author>
<name>Chuck Lever</name>
</author>
<published>2006-10-20T06:28:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b7766da7f7395b74dec9e52005b7dac0d09391a4'/>
<id>urn:sha1:b7766da7f7395b74dec9e52005b7dac0d09391a4</id>
<content type='text'>
Yes, this actually passed tests the way it was.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] SUNRPC: fix race in in-kernel RPC portmapper client</title>
<updated>2006-10-20T17:26:39Z</updated>
<author>
<name>Chuck Lever</name>
</author>
<published>2006-10-20T06:28:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=71bdcf8056f910dc57ea3d0def80a9329e7dc52d'/>
<id>urn:sha1:71bdcf8056f910dc57ea3d0def80a9329e7dc52d</id>
<content type='text'>
When submitting a request to a fast portmapper (such as the local rpcbind
daemon), the request can complete before the parent task is even queued up on
xprt-&gt;binding.  Fix this by queuing before submitting the rpcbind request.

Test plan:
Connectathon locking test with UDP.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
