Skip to content

Commit

Permalink
Merge tag 'nfsd-4.7-3' of git://linux-nfs.org/~bfields/linux
Browse files Browse the repository at this point in the history
Pull lockd/locks fixes from Bruce Fields:
 "One fix for lockd soft lookups in an error path, and one fix for file
  leases on overlayfs"

* tag 'nfsd-4.7-3' of git://linux-nfs.org/~bfields/linux:
  locks: use file_inode()
  lockd: unregister notifier blocks if the service fails to come up completely
  • Loading branch information
Linus Torvalds committed Jul 1, 2016
2 parents 0d064a7 + 6343a21 commit 2728c57
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
13 changes: 10 additions & 3 deletions fs/lockd/svc.c
Original file line number Diff line number Diff line change
Expand Up @@ -335,12 +335,17 @@ static struct notifier_block lockd_inet6addr_notifier = {
};
#endif

static void lockd_svc_exit_thread(void)
static void lockd_unregister_notifiers(void)
{
unregister_inetaddr_notifier(&lockd_inetaddr_notifier);
#if IS_ENABLED(CONFIG_IPV6)
unregister_inet6addr_notifier(&lockd_inet6addr_notifier);
#endif
}

static void lockd_svc_exit_thread(void)
{
lockd_unregister_notifiers();
svc_exit_thread(nlmsvc_rqst);
}

Expand Down Expand Up @@ -462,15 +467,17 @@ int lockd_up(struct net *net)
* Note: svc_serv structures have an initial use count of 1,
* so we exit through here on both success and failure.
*/
err_net:
err_put:
svc_destroy(serv);
err_create:
mutex_unlock(&nlmsvc_mutex);
return error;

err_start:
lockd_down_net(serv, net);
goto err_net;
err_net:
lockd_unregister_notifiers();
goto err_put;
}
EXPORT_SYMBOL_GPL(lockd_up);

Expand Down
2 changes: 1 addition & 1 deletion fs/locks.c
Original file line number Diff line number Diff line change
Expand Up @@ -1628,7 +1628,7 @@ generic_add_lease(struct file *filp, long arg, struct file_lock **flp, void **pr
{
struct file_lock *fl, *my_fl = NULL, *lease;
struct dentry *dentry = filp->f_path.dentry;
struct inode *inode = dentry->d_inode;
struct inode *inode = file_inode(filp);
struct file_lock_context *ctx;
bool is_deleg = (*flp)->fl_flags & FL_DELEG;
int error;
Expand Down

0 comments on commit 2728c57

Please sign in to comment.