diff options
author | NeilBrown <neilb@suse.de> | 2007-02-14 03:33:13 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-14 11:09:53 -0500 |
commit | 3fc605a2aa38899c12180ca311f1eeb61a6d867e (patch) | |
tree | 4a75b90cc8cffca4661642360cbec42a424bf9cf /net/sunrpc/sunrpc_syms.c | |
parent | af6a4e280e3ff453653f39190b57b345ff0bec16 (diff) |
[PATCH] knfsd: allow the server to provide a gid list when using AUTH_UNIX authentication
AUTH_UNIX authentication (the standard with NFS) has a limit of 16 groups ids.
This causes problems for people in more than 16 groups.
So allow the server to map a uid into a list of group ids based on local
knowledge rather depending on the (possibly truncated) list from the client.
If there is no process on the server responding to upcalls, the gidlist in the
request will still be used.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net/sunrpc/sunrpc_syms.c')
-rw-r--r-- | net/sunrpc/sunrpc_syms.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c index d85fddeb6388..d3865265fc18 100644 --- a/net/sunrpc/sunrpc_syms.c +++ b/net/sunrpc/sunrpc_syms.c | |||
@@ -137,7 +137,7 @@ EXPORT_SYMBOL(nlm_debug); | |||
137 | 137 | ||
138 | extern int register_rpc_pipefs(void); | 138 | extern int register_rpc_pipefs(void); |
139 | extern void unregister_rpc_pipefs(void); | 139 | extern void unregister_rpc_pipefs(void); |
140 | extern struct cache_detail ip_map_cache; | 140 | extern struct cache_detail ip_map_cache, unix_gid_cache; |
141 | extern int init_socket_xprt(void); | 141 | extern int init_socket_xprt(void); |
142 | extern void cleanup_socket_xprt(void); | 142 | extern void cleanup_socket_xprt(void); |
143 | 143 | ||
@@ -157,6 +157,7 @@ init_sunrpc(void) | |||
157 | rpc_proc_init(); | 157 | rpc_proc_init(); |
158 | #endif | 158 | #endif |
159 | cache_register(&ip_map_cache); | 159 | cache_register(&ip_map_cache); |
160 | cache_register(&unix_gid_cache); | ||
160 | init_socket_xprt(); | 161 | init_socket_xprt(); |
161 | out: | 162 | out: |
162 | return err; | 163 | return err; |
@@ -170,6 +171,8 @@ cleanup_sunrpc(void) | |||
170 | rpc_destroy_mempool(); | 171 | rpc_destroy_mempool(); |
171 | if (cache_unregister(&ip_map_cache)) | 172 | if (cache_unregister(&ip_map_cache)) |
172 | printk(KERN_ERR "sunrpc: failed to unregister ip_map cache\n"); | 173 | printk(KERN_ERR "sunrpc: failed to unregister ip_map cache\n"); |
174 | if (cache_unregister(&unix_gid_cache)) | ||
175 | printk(KERN_ERR "sunrpc: failed to unregister unix_gid cache\n"); | ||
173 | #ifdef RPC_DEBUG | 176 | #ifdef RPC_DEBUG |
174 | rpc_unregister_sysctl(); | 177 | rpc_unregister_sysctl(); |
175 | #endif | 178 | #endif |