diff options
-rw-r--r-- | fs/locks.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/fs/locks.c b/fs/locks.c index 814c51d0de47..86668dd211ae 100644 --- a/fs/locks.c +++ b/fs/locks.c | |||
@@ -427,18 +427,8 @@ static void lease_break_callback(struct file_lock *fl) | |||
427 | kill_fasync(&fl->fl_fasync, SIGIO, POLL_MSG); | 427 | kill_fasync(&fl->fl_fasync, SIGIO, POLL_MSG); |
428 | } | 428 | } |
429 | 429 | ||
430 | static void lease_release_private_callback(struct file_lock *fl) | ||
431 | { | ||
432 | if (!fl->fl_file) | ||
433 | return; | ||
434 | |||
435 | f_delown(fl->fl_file); | ||
436 | fl->fl_file->f_owner.signum = 0; | ||
437 | } | ||
438 | |||
439 | static const struct lock_manager_operations lease_manager_ops = { | 430 | static const struct lock_manager_operations lease_manager_ops = { |
440 | .lm_break = lease_break_callback, | 431 | .lm_break = lease_break_callback, |
441 | .lm_release_private = lease_release_private_callback, | ||
442 | .lm_change = lease_modify, | 432 | .lm_change = lease_modify, |
443 | }; | 433 | }; |
444 | 434 | ||
@@ -1155,8 +1145,13 @@ int lease_modify(struct file_lock **before, int arg) | |||
1155 | return error; | 1145 | return error; |
1156 | lease_clear_pending(fl, arg); | 1146 | lease_clear_pending(fl, arg); |
1157 | locks_wake_up_blocks(fl); | 1147 | locks_wake_up_blocks(fl); |
1158 | if (arg == F_UNLCK) | 1148 | if (arg == F_UNLCK) { |
1149 | struct file *filp = fl->fl_file; | ||
1150 | |||
1151 | f_delown(filp); | ||
1152 | filp->f_owner.signum = 0; | ||
1159 | locks_delete_lock(before); | 1153 | locks_delete_lock(before); |
1154 | } | ||
1160 | return 0; | 1155 | return 0; |
1161 | } | 1156 | } |
1162 | 1157 | ||