Commit 45c3c627 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag '6.6-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull smb client fixes from Steve French:
 "Three small SMB3 client fixes, one to improve a null check and two
  minor cleanups"

* tag '6.6-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
  smb3: fix some minor typos and repeated words
  smb3: correct places where ENOTSUPP is used instead of preferred EOPNOTSUPP
  smb3: move server check earlier when setting channel sequence number
parents 39e0c8af 2c75426c
...@@ -2680,7 +2680,7 @@ int cifs_fiemap(struct inode *inode, struct fiemap_extent_info *fei, u64 start, ...@@ -2680,7 +2680,7 @@ int cifs_fiemap(struct inode *inode, struct fiemap_extent_info *fei, u64 start,
} }
cifsFileInfo_put(cfile); cifsFileInfo_put(cfile);
return -ENOTSUPP; return -EOPNOTSUPP;
} }
int cifs_truncate_page(struct address_space *mapping, loff_t from) int cifs_truncate_page(struct address_space *mapping, loff_t from)
......
...@@ -297,7 +297,7 @@ smb2_adjust_credits(struct TCP_Server_Info *server, ...@@ -297,7 +297,7 @@ smb2_adjust_credits(struct TCP_Server_Info *server,
cifs_server_dbg(VFS, "request has less credits (%d) than required (%d)", cifs_server_dbg(VFS, "request has less credits (%d) than required (%d)",
credits->value, new_val); credits->value, new_val);
return -ENOTSUPP; return -EOPNOTSUPP;
} }
spin_lock(&server->req_lock); spin_lock(&server->req_lock);
...@@ -1161,7 +1161,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon, ...@@ -1161,7 +1161,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,
/* Use a fudge factor of 256 bytes in case we collide /* Use a fudge factor of 256 bytes in case we collide
* with a different set_EAs command. * with a different set_EAs command.
*/ */
if(CIFSMaxBufSize - MAX_SMB2_CREATE_RESPONSE_SIZE - if (CIFSMaxBufSize - MAX_SMB2_CREATE_RESPONSE_SIZE -
MAX_SMB2_CLOSE_RESPONSE_SIZE - 256 < MAX_SMB2_CLOSE_RESPONSE_SIZE - 256 <
used_len + ea_name_len + ea_value_len + 1) { used_len + ea_name_len + ea_value_len + 1) {
rc = -ENOSPC; rc = -ENOSPC;
...@@ -4591,7 +4591,7 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid, ...@@ -4591,7 +4591,7 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
if (shdr->Command != SMB2_READ) { if (shdr->Command != SMB2_READ) {
cifs_server_dbg(VFS, "only big read responses are supported\n"); cifs_server_dbg(VFS, "only big read responses are supported\n");
return -ENOTSUPP; return -EOPNOTSUPP;
} }
if (server->ops->is_session_expired && if (server->ops->is_session_expired &&
......
...@@ -89,20 +89,26 @@ smb2_hdr_assemble(struct smb2_hdr *shdr, __le16 smb2_cmd, ...@@ -89,20 +89,26 @@ smb2_hdr_assemble(struct smb2_hdr *shdr, __le16 smb2_cmd,
struct TCP_Server_Info *server) struct TCP_Server_Info *server)
{ {
struct smb3_hdr_req *smb3_hdr; struct smb3_hdr_req *smb3_hdr;
shdr->ProtocolId = SMB2_PROTO_NUMBER; shdr->ProtocolId = SMB2_PROTO_NUMBER;
shdr->StructureSize = cpu_to_le16(64); shdr->StructureSize = cpu_to_le16(64);
shdr->Command = smb2_cmd; shdr->Command = smb2_cmd;
if (server->dialect >= SMB30_PROT_ID) {
/* After reconnect SMB3 must set ChannelSequence on subsequent reqs */
smb3_hdr = (struct smb3_hdr_req *)shdr;
/* if primary channel is not set yet, use default channel for chan sequence num */
if (SERVER_IS_CHAN(server))
smb3_hdr->ChannelSequence =
cpu_to_le16(server->primary_server->channel_sequence_num);
else
smb3_hdr->ChannelSequence = cpu_to_le16(server->channel_sequence_num);
}
if (server) { if (server) {
/* After reconnect SMB3 must set ChannelSequence on subsequent reqs */
if (server->dialect >= SMB30_PROT_ID) {
smb3_hdr = (struct smb3_hdr_req *)shdr;
/*
* if primary channel is not set yet, use default
* channel for chan sequence num
*/
if (SERVER_IS_CHAN(server))
smb3_hdr->ChannelSequence =
cpu_to_le16(server->primary_server->channel_sequence_num);
else
smb3_hdr->ChannelSequence =
cpu_to_le16(server->channel_sequence_num);
}
spin_lock(&server->req_lock); spin_lock(&server->req_lock);
/* Request up to 10 credits but don't go over the limit. */ /* Request up to 10 credits but don't go over the limit. */
if (server->credits >= server->max_credits) if (server->credits >= server->max_credits)
...@@ -2234,7 +2240,7 @@ create_durable_v2_buf(struct cifs_open_parms *oparms) ...@@ -2234,7 +2240,7 @@ create_durable_v2_buf(struct cifs_open_parms *oparms)
* (most servers default to 120 seconds) and most clients default to 0. * (most servers default to 120 seconds) and most clients default to 0.
* This can be overridden at mount ("handletimeout=") if the user wants * This can be overridden at mount ("handletimeout=") if the user wants
* a different persistent (or resilient) handle timeout for all opens * a different persistent (or resilient) handle timeout for all opens
* opens on a particular SMB3 mount. * on a particular SMB3 mount.
*/ */
buf->dcontext.Timeout = cpu_to_le32(oparms->tcon->handle_timeout); buf->dcontext.Timeout = cpu_to_le32(oparms->tcon->handle_timeout);
buf->dcontext.Flags = cpu_to_le32(SMB2_DHANDLE_FLAG_PERSISTENT); buf->dcontext.Flags = cpu_to_le32(SMB2_DHANDLE_FLAG_PERSISTENT);
...@@ -2379,7 +2385,7 @@ add_twarp_context(struct kvec *iov, unsigned int *num_iovec, __u64 timewarp) ...@@ -2379,7 +2385,7 @@ add_twarp_context(struct kvec *iov, unsigned int *num_iovec, __u64 timewarp)
return 0; return 0;
} }
/* See See http://technet.microsoft.com/en-us/library/hh509017(v=ws.10).aspx */ /* See http://technet.microsoft.com/en-us/library/hh509017(v=ws.10).aspx */
static void setup_owner_group_sids(char *buf) static void setup_owner_group_sids(char *buf)
{ {
struct owner_group_sids *sids = (struct owner_group_sids *)buf; struct owner_group_sids *sids = (struct owner_group_sids *)buf;
...@@ -3124,6 +3130,7 @@ void ...@@ -3124,6 +3130,7 @@ void
SMB2_ioctl_free(struct smb_rqst *rqst) SMB2_ioctl_free(struct smb_rqst *rqst)
{ {
int i; int i;
if (rqst && rqst->rq_iov) { if (rqst && rqst->rq_iov) {
cifs_small_buf_release(rqst->rq_iov[0].iov_base); /* request */ cifs_small_buf_release(rqst->rq_iov[0].iov_base); /* request */
for (i = 1; i < rqst->rq_nvec; i++) for (i = 1; i < rqst->rq_nvec; i++)
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include <linux/bvec.h> #include <linux/bvec.h>
#include <linux/highmem.h> #include <linux/highmem.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/processor.h> #include <linux/processor.h>
#include <linux/mempool.h> #include <linux/mempool.h>
#include <linux/sched/signal.h> #include <linux/sched/signal.h>
#include <linux/task_io_accounting_ops.h> #include <linux/task_io_accounting_ops.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment