ksmbd: uninterruptible wait for a file being unlocked
authorHyunchul Lee <hyc.lee@gmail.com>
Sat, 10 Jul 2021 00:34:20 +0000 (09:34 +0900)
committerNamjae Jeon <namjae.jeon@samsung.com>
Sat, 10 Jul 2021 07:23:56 +0000 (16:23 +0900)
the wait can be canceled by SMB2_CANCEL, SMB2_CLOSE,
SMB2_LOGOFF, disconnection or shutdown, we don't have
to use wait_event_interruptible.

And this remove the warning from Coverity:

CID 1502834 (#1 of 1): Unused value (UNUSED_VALUE)
returned_value: Assigning value from ksmbd_vfs_posix_lock_wait(flock)
to err here, but that stored value is overwritten before it can be used.

Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/ksmbd/smb2pdu.c
fs/ksmbd/vfs.c
fs/ksmbd/vfs.h

index 99e2368..f73721c 100644 (file)
@@ -6799,7 +6799,7 @@ skip:
 
                                smb2_send_interim_resp(work, STATUS_PENDING);
 
-                               err = ksmbd_vfs_posix_lock_wait(flock);
+                               ksmbd_vfs_posix_lock_wait(flock);
 
                                if (work->state != KSMBD_WORK_ACTIVE) {
                                        list_del(&smb_lock->llist);
index 38677c2..88e947f 100644 (file)
@@ -1784,9 +1784,9 @@ int ksmbd_vfs_copy_file_ranges(struct ksmbd_work *work,
        return 0;
 }
 
-int ksmbd_vfs_posix_lock_wait(struct file_lock *flock)
+void ksmbd_vfs_posix_lock_wait(struct file_lock *flock)
 {
-       return wait_event_interruptible(flock->fl_wait, !flock->fl_blocker);
+       wait_event(flock->fl_wait, !flock->fl_blocker);
 }
 
 int ksmbd_vfs_posix_lock_wait_timeout(struct file_lock *flock, long timeout)
index b255f90..cb0cba0 100644 (file)
@@ -168,7 +168,7 @@ int ksmbd_vfs_fill_dentry_attrs(struct ksmbd_work *work,
                                struct user_namespace *user_ns,
                                struct dentry *dentry,
                                struct ksmbd_kstat *ksmbd_kstat);
-int ksmbd_vfs_posix_lock_wait(struct file_lock *flock);
+void ksmbd_vfs_posix_lock_wait(struct file_lock *flock);
 int ksmbd_vfs_posix_lock_wait_timeout(struct file_lock *flock, long timeout);
 void ksmbd_vfs_posix_lock_unblock(struct file_lock *flock);
 int ksmbd_vfs_remove_acl_xattrs(struct user_namespace *user_ns,