:   file_lock->fl_flags |= FL_SLEEP;  }   error = do_lock_file_wait(filp, cmd, file_lock);   /*   * Attempt to detect a close/fcntl race and recover by   * releasing the lock that was just acquired.   */  if (!error && file_lock->fl_type != F_UNLCK) {   /*    * We need that spin_lock here - it prevents reordering between    * update of i_flctx->flc_posix and check for it done in    * close(). rcu_read_lock() wouldn't do.    */   spin_lock(&current->files->file_lock);   f = fcheck(fd);   spin_unlock(&current->files->file_lock);   if (f != filp) {    file_lock->fl_type = F_UNLCK;    error = do_lock_file_wait(filp, cmd, file_lock);    WARN_ON_ONCE(error);    error = -EBADF;   }  } out:  locks_free_lock(file_lock);  return error; } 