diff options
author | Stanislav Kinsbursky <skinsbursky@parallels.com> | 2012-03-29 10:54:33 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-04-11 17:55:06 -0400 |
commit | e3f70eadb7dddfb5a2bb9afff7abfc6ee17a29d0 (patch) | |
tree | 688a94f2c86e0d7c637609239925f94f8ee08626 /fs/lockd/svc.c | |
parent | f890edbbeff6928b7db0c6179a9036cbd4f0efbf (diff) |
Lockd: pass network namespace to creation and destruction routines
v2: dereference of most probably already released nlm_host removed in
nlmclnt_done() and reclaimer().
These routines are called from locks reclaimer() kernel thread. This thread
works in "init_net" network context and currently relays on persence on lockd
thread and it's per-net resources. Thus lockd_up() and lockd_down() can't relay
on current network context. So let's pass corrent one into them.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/lockd/svc.c')
-rw-r--r-- | fs/lockd/svc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index f49b9afc4436..1ead0750cdbb 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c | |||
@@ -295,11 +295,10 @@ static void lockd_down_net(struct net *net) | |||
295 | /* | 295 | /* |
296 | * Bring up the lockd process if it's not already up. | 296 | * Bring up the lockd process if it's not already up. |
297 | */ | 297 | */ |
298 | int lockd_up(void) | 298 | int lockd_up(struct net *net) |
299 | { | 299 | { |
300 | struct svc_serv *serv; | 300 | struct svc_serv *serv; |
301 | int error = 0; | 301 | int error = 0; |
302 | struct net *net = current->nsproxy->net_ns; | ||
303 | 302 | ||
304 | mutex_lock(&nlmsvc_mutex); | 303 | mutex_lock(&nlmsvc_mutex); |
305 | /* | 304 | /* |
@@ -378,12 +377,12 @@ EXPORT_SYMBOL_GPL(lockd_up); | |||
378 | * Decrement the user count and bring down lockd if we're the last. | 377 | * Decrement the user count and bring down lockd if we're the last. |
379 | */ | 378 | */ |
380 | void | 379 | void |
381 | lockd_down(void) | 380 | lockd_down(struct net *net) |
382 | { | 381 | { |
383 | mutex_lock(&nlmsvc_mutex); | 382 | mutex_lock(&nlmsvc_mutex); |
384 | if (nlmsvc_users) { | 383 | if (nlmsvc_users) { |
385 | if (--nlmsvc_users) { | 384 | if (--nlmsvc_users) { |
386 | lockd_down_net(current->nsproxy->net_ns); | 385 | lockd_down_net(net); |
387 | goto out; | 386 | goto out; |
388 | } | 387 | } |
389 | } else { | 388 | } else { |