*req = REQUEST_BUF_NEXT(work);
*rsp = RESPONSE_BUF_NEXT(work);
} else {
- *req = REQUEST_BUF(work);
- *rsp = RESPONSE_BUF(work);
+ *req = work->request_buf;
+ *rsp = work->response_buf;
}
}
*/
int smb2_get_ksmbd_tcon(struct ksmbd_work *work)
{
- struct smb2_hdr *req_hdr = REQUEST_BUF(work);
+ struct smb2_hdr *req_hdr = work->request_buf;
int tree_id;
work->tcon = NULL;
if (work->next_smb2_rcv_hdr_off)
err_rsp = RESPONSE_BUF_NEXT(work);
else
- err_rsp = RESPONSE_BUF(work);
+ err_rsp = work->response_buf;
if (err_rsp->hdr.Status != STATUS_STOPPED_ON_SYMLINK) {
err_rsp->StructureSize = SMB2_ERROR_STRUCTURE_SIZE2_LE;
err_rsp->Reserved = 0;
err_rsp->ByteCount = 0;
err_rsp->ErrorData[0] = 0;
- inc_rfc1001_len(RESPONSE_BUF(work), SMB2_ERROR_STRUCTURE_SIZE2);
+ inc_rfc1001_len(work->response_buf, SMB2_ERROR_STRUCTURE_SIZE2);
}
}
*/
int is_smb2_neg_cmd(struct ksmbd_work *work)
{
- struct smb2_hdr *hdr = REQUEST_BUF(work);
+ struct smb2_hdr *hdr = work->request_buf;
/* is it SMB2 header ? */
if (hdr->ProtocolId != SMB2_PROTO_NUMBER)
*/
int is_smb2_rsp(struct ksmbd_work *work)
{
- struct smb2_hdr *hdr = RESPONSE_BUF(work);
+ struct smb2_hdr *hdr = work->response_buf;
/* is it SMB2 header ? */
if (hdr->ProtocolId != SMB2_PROTO_NUMBER)
if (work->next_smb2_rcv_hdr_off)
rcv_hdr = REQUEST_BUF_NEXT(work);
else
- rcv_hdr = REQUEST_BUF(work);
+ rcv_hdr = work->request_buf;
return le16_to_cpu(rcv_hdr->Command);
}
if (work->next_smb2_rcv_hdr_off)
rsp_hdr = RESPONSE_BUF_NEXT(work);
else
- rsp_hdr = RESPONSE_BUF(work);
+ rsp_hdr = work->response_buf;
rsp_hdr->Status = err;
smb2_set_err_rsp(work);
}
conn->dialect <= SMB311_PROT_ID))
return -EINVAL;
- rsp_hdr = RESPONSE_BUF(work);
+ rsp_hdr = work->response_buf;
memset(rsp_hdr, 0, sizeof(struct smb2_hdr) + 2);
rsp_hdr->SessionId = 0;
memset(rsp_hdr->Signature, 0, 16);
- rsp = RESPONSE_BUF(work);
+ rsp = work->response_buf;
WARN_ON(ksmbd_conn_good(work));
work->compound_sid = le64_to_cpu(rsp->SessionId);
}
- len = get_rfc1002_len(RESPONSE_BUF(work)) - work->next_smb2_rsp_hdr_off;
+ len = get_rfc1002_len(work->response_buf) - work->next_smb2_rsp_hdr_off;
next_hdr_offset = le32_to_cpu(req->NextCommand);
new_len = ALIGN(len, 8);
- inc_rfc1001_len(RESPONSE_BUF(work), ((sizeof(struct smb2_hdr) - 4)
+ inc_rfc1001_len(work->response_buf, ((sizeof(struct smb2_hdr) - 4)
+ new_len - len));
rsp->NextCommand = cpu_to_le32(new_len);
*/
bool is_chained_smb2_message(struct ksmbd_work *work)
{
- struct smb2_hdr *hdr = REQUEST_BUF(work);
+ struct smb2_hdr *hdr = work->request_buf;
unsigned int len;
if (hdr->ProtocolId != SMB2_PROTO_NUMBER)
* This is last request in chained command,
* align response to 8 byte
*/
- len = ALIGN(get_rfc1002_len(RESPONSE_BUF(work)), 8);
- len = len - get_rfc1002_len(RESPONSE_BUF(work));
+ len = ALIGN(get_rfc1002_len(work->response_buf), 8);
+ len = len - get_rfc1002_len(work->response_buf);
if (len) {
ksmbd_debug(SMB, "padding len %u\n", len);
- inc_rfc1001_len(RESPONSE_BUF(work), len);
- if (HAS_AUX_PAYLOAD(work))
+ inc_rfc1001_len(work->response_buf, len);
+ if (work->aux_payload_sz)
work->aux_payload_sz += len;
}
}
*/
int init_smb2_rsp_hdr(struct ksmbd_work *work)
{
- struct smb2_hdr *rsp_hdr = RESPONSE_BUF(work);
- struct smb2_hdr *rcv_hdr = REQUEST_BUF(work);
+ struct smb2_hdr *rsp_hdr = work->response_buf;
+ struct smb2_hdr *rcv_hdr = work->request_buf;
struct ksmbd_conn *conn = work->conn;
memset(rsp_hdr, 0, sizeof(struct smb2_hdr) + 2);
*/
int smb2_allocate_rsp_buf(struct ksmbd_work *work)
{
- struct smb2_hdr *hdr = REQUEST_BUF(work);
+ struct smb2_hdr *hdr = work->request_buf;
size_t small_sz = MAX_CIFS_SMALL_BUFFER_SIZE;
size_t large_sz = work->conn->vals->max_trans_size + MAX_SMB2_HDR_SIZE;
size_t sz = small_sz;
if (cmd == SMB2_QUERY_INFO_HE) {
struct smb2_query_info_req *req;
- req = REQUEST_BUF(work);
+ req = work->request_buf;
if (req->InfoType == SMB2_O_INFO_FILE &&
(req->FileInfoClass == FILE_FULL_EA_INFORMATION ||
req->FileInfoClass == FILE_ALL_INFORMATION)) {
else
work->response_buf = ksmbd_alloc_response(sz);
- if (!RESPONSE_BUF(work)) {
+ if (!work->response_buf) {
ksmbd_err("Failed to allocate %zu bytes buffer\n", sz);
return -ENOMEM;
}
*/
int smb2_check_user_session(struct ksmbd_work *work)
{
- struct smb2_hdr *req_hdr = REQUEST_BUF(work);
+ struct smb2_hdr *req_hdr = work->request_buf;
struct ksmbd_conn *conn = work->conn;
unsigned int cmd = conn->ops->get_cmd_val(work);
unsigned long long sess_id;
struct ksmbd_conn *conn = work->conn;
int id;
- rsp_hdr = RESPONSE_BUF(work);
+ rsp_hdr = work->response_buf;
rsp_hdr->Flags |= SMB2_FLAGS_ASYNC_COMMAND;
id = ksmbd_acquire_async_msg_id(conn->async_ida);
{
struct smb2_hdr *rsp_hdr;
- rsp_hdr = RESPONSE_BUF(work);
+ rsp_hdr = work->response_buf;
smb2_set_err_rsp(work);
rsp_hdr->Status = status;
int smb2_handle_negotiate(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
- struct smb2_negotiate_req *req = REQUEST_BUF(work);
- struct smb2_negotiate_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_negotiate_req *req = work->request_buf;
+ struct smb2_negotiate_rsp *rsp = work->response_buf;
int rc = 0;
__le32 status;
}
ksmbd_gen_preauth_integrity_hash(conn,
- REQUEST_BUF(work),
+ work->request_buf,
conn->preauth_info->Preauth_HashValue);
rsp->NegotiateContextOffset =
cpu_to_le32(OFFSET_OF_NEG_CONTEXT);
}
ksmbd_gen_preauth_integrity_hash(conn,
- REQUEST_BUF(work),
+ work->request_buf,
sess->Preauth_HashValue);
return 0;
}
if (!conn->use_spnego)
return -EINVAL;
- req = REQUEST_BUF(work);
+ req = work->request_buf;
sz = le16_to_cpu(req->SecurityBufferLength);
if (!ksmbd_decode_negTokenInit((char *)negblob, sz, conn)) {
static int ntlm_negotiate(struct ksmbd_work *work,
struct negotiate_message *negblob)
{
- struct smb2_sess_setup_req *req = REQUEST_BUF(work);
- struct smb2_sess_setup_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_sess_setup_req *req = work->request_buf;
+ struct smb2_sess_setup_rsp *rsp = work->response_buf;
struct challenge_message *chgblob;
unsigned char *spnego_blob = NULL;
u16 spnego_blob_len;
static int ntlm_authenticate(struct ksmbd_work *work)
{
- struct smb2_sess_setup_req *req = REQUEST_BUF(work);
- struct smb2_sess_setup_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_sess_setup_req *req = work->request_buf;
+ struct smb2_sess_setup_rsp *rsp = work->response_buf;
struct ksmbd_conn *conn = work->conn;
struct ksmbd_session *sess = work->sess;
struct channel *chann = NULL;
#ifdef CONFIG_SMB_SERVER_KERBEROS5
static int krb5_authenticate(struct ksmbd_work *work)
{
- struct smb2_sess_setup_req *req = REQUEST_BUF(work);
- struct smb2_sess_setup_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_sess_setup_req *req = work->request_buf;
+ struct smb2_sess_setup_rsp *rsp = work->response_buf;
struct ksmbd_conn *conn = work->conn;
struct ksmbd_session *sess = work->sess;
char *in_blob, *out_blob;
int smb2_sess_setup(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
- struct smb2_sess_setup_req *req = REQUEST_BUF(work);
- struct smb2_sess_setup_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_sess_setup_req *req = work->request_buf;
+ struct smb2_sess_setup_rsp *rsp = work->response_buf;
struct ksmbd_session *sess;
struct negotiate_message *negblob;
int rc = 0;
int smb2_tree_connect(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
- struct smb2_tree_connect_req *req = REQUEST_BUF(work);
- struct smb2_tree_connect_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_tree_connect_req *req = work->request_buf;
+ struct smb2_tree_connect_rsp *rsp = work->response_buf;
struct ksmbd_session *sess = work->sess;
char *treename = NULL, *name = NULL;
struct ksmbd_tree_conn_status status;
*/
int smb2_tree_disconnect(struct ksmbd_work *work)
{
- struct smb2_tree_disconnect_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_tree_disconnect_rsp *rsp = work->response_buf;
struct ksmbd_session *sess = work->sess;
struct ksmbd_tree_connect *tcon = work->tcon;
ksmbd_debug(SMB, "request\n");
if (!tcon) {
- struct smb2_tree_disconnect_req *req = REQUEST_BUF(work);
+ struct smb2_tree_disconnect_req *req = work->request_buf;
ksmbd_debug(SMB, "Invalid tid %d\n", req->hdr.Id.SyncId.TreeId);
rsp->hdr.Status = STATUS_NETWORK_NAME_DELETED;
int smb2_session_logoff(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
- struct smb2_logoff_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_logoff_rsp *rsp = work->response_buf;
struct ksmbd_session *sess = work->sess;
rsp->StructureSize = cpu_to_le16(4);
ksmbd_conn_wait_idle(conn);
if (ksmbd_tree_conn_session_logoff(sess)) {
- struct smb2_logoff_req *req = REQUEST_BUF(work);
+ struct smb2_logoff_req *req = work->request_buf;
ksmbd_debug(SMB, "Invalid tid %d\n", req->hdr.Id.SyncId.TreeId);
rsp->hdr.Status = STATUS_NETWORK_NAME_DELETED;
*/
static noinline int create_smb2_pipe(struct ksmbd_work *work)
{
- struct smb2_create_rsp *rsp = RESPONSE_BUF(work);
- struct smb2_create_req *req = REQUEST_BUF(work);
+ struct smb2_create_rsp *rsp = work->response_buf;
+ struct smb2_create_req *req = work->request_buf;
int id;
int err;
char *name;
umode_t posix_mode = 0;
__le32 daccess, maximal_access = 0;
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
WORK_BUFFERS(work, req, rsp);
if (req->hdr.NextCommand && !work->next_smb2_rcv_hdr_off &&
int buffer_sz;
struct smb2_query_dir_private query_dir_private = {NULL, };
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
WORK_BUFFERS(work, req, rsp);
if (ksmbd_override_fsids(work)) {
struct smb2_query_info_rsp *rsp, *rsp_org;
int rc = 0;
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
WORK_BUFFERS(work, req, rsp);
ksmbd_debug(SMB, "GOT query info request\n");
static noinline int smb2_close_pipe(struct ksmbd_work *work)
{
uint64_t id;
- struct smb2_close_req *req = REQUEST_BUF(work);
- struct smb2_close_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_close_req *req = work->request_buf;
+ struct smb2_close_rsp *rsp = work->response_buf;
id = le64_to_cpu(req->VolatileFileId);
ksmbd_session_rpc_close(work->sess, id);
u64 time;
int err = 0;
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
WORK_BUFFERS(work, req, rsp);
if (test_share_config_flag(work->tcon->share_conf,
*/
int smb2_echo(struct ksmbd_work *work)
{
- struct smb2_echo_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_echo_rsp *rsp = work->response_buf;
rsp->StructureSize = cpu_to_le16(4);
rsp->Reserved = 0;
ksmbd_debug(SMB, "Received set info request\n");
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
if (work->next_smb2_rcv_hdr_off) {
req = REQUEST_BUF_NEXT(work);
rsp = RESPONSE_BUF_NEXT(work);
pid = work->compound_pfid;
}
} else {
- req = REQUEST_BUF(work);
- rsp = RESPONSE_BUF(work);
+ req = work->request_buf;
+ rsp = work->response_buf;
}
if (!HAS_FILE_ID(id)) {
int nbytes = 0, err;
uint64_t id;
struct ksmbd_rpc_command *rpc_resp;
- struct smb2_read_req *req = REQUEST_BUF(work);
- struct smb2_read_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_read_req *req = work->request_buf;
+ struct smb2_read_rsp *rsp = work->response_buf;
id = le64_to_cpu(req->VolatileFileId);
ssize_t nbytes = 0, remain_bytes = 0;
int err = 0;
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
WORK_BUFFERS(work, req, rsp);
if (test_share_config_flag(work->tcon->share_conf,
if ((nbytes == 0 && length != 0) || nbytes < mincount) {
if (server_conf.flags & KSMBD_GLOBAL_FLAG_CACHE_RBUF)
- ksmbd_release_buffer(AUX_PAYLOAD(work));
+ ksmbd_release_buffer(work->aux_payload_buf);
else
- ksmbd_free_response(AUX_PAYLOAD(work));
- INIT_AUX_PAYLOAD(work);
+ ksmbd_free_response(work->aux_payload_buf);
+ work->aux_payload_buf = NULL;
rsp->hdr.Status = STATUS_END_OF_FILE;
smb2_set_err_rsp(work);
ksmbd_fd_put(work, fp);
req->Channel == SMB2_CHANNEL_RDMA_V1) {
/* write data to the client using rdma channel */
remain_bytes = smb2_read_rdma_channel(work, req,
- AUX_PAYLOAD(work), nbytes);
+ work->aux_payload_buf, nbytes);
if (server_conf.flags & KSMBD_GLOBAL_FLAG_CACHE_RBUF)
- ksmbd_release_buffer(AUX_PAYLOAD(work));
+ ksmbd_release_buffer(work->aux_payload_buf);
else
- ksmbd_free_response(AUX_PAYLOAD(work));
- INIT_AUX_PAYLOAD(work);
+ ksmbd_free_response(work->aux_payload_buf);
+ work->aux_payload_buf = NULL;
nbytes = 0;
if (remain_bytes < 0) {
*/
static noinline int smb2_write_pipe(struct ksmbd_work *work)
{
- struct smb2_write_req *req = REQUEST_BUF(work);
- struct smb2_write_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_write_req *req = work->request_buf;
+ struct smb2_write_rsp *rsp = work->response_buf;
struct ksmbd_rpc_command *rpc_resp;
uint64_t id = 0;
int err = 0, ret = 0;
bool writethrough = false;
int err = 0;
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
WORK_BUFFERS(work, req, rsp);
if (test_share_config_flag(work->tcon->share_conf,
struct smb2_flush_rsp *rsp, *rsp_org;
int err;
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
WORK_BUFFERS(work, req, rsp);
ksmbd_debug(SMB, "SMB2_FLUSH called for fid %llu\n",
int smb2_cancel(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
- struct smb2_hdr *hdr = REQUEST_BUF(work);
+ struct smb2_hdr *hdr = work->request_buf;
struct smb2_hdr *chdr;
struct ksmbd_work *cancel_work = NULL;
struct list_head *tmp;
list_for_each(tmp, command_list) {
cancel_work = list_entry(tmp, struct ksmbd_work,
async_request_entry);
- chdr = REQUEST_BUF(cancel_work);
+ chdr = cancel_work->request_buf;
if (cancel_work->async_id !=
le64_to_cpu(hdr->Id.AsyncId))
list_for_each(tmp, command_list) {
cancel_work = list_entry(tmp, struct ksmbd_work,
request_entry);
- chdr = REQUEST_BUF(cancel_work);
+ chdr = cancel_work->request_buf;
if (chdr->MessageId != hdr->MessageId ||
cancel_work == work)
*/
int smb2_lock(struct ksmbd_work *work)
{
- struct smb2_lock_req *req = REQUEST_BUF(work);
- struct smb2_lock_rsp *rsp = RESPONSE_BUF(work);
+ struct smb2_lock_req *req = work->request_buf;
+ struct smb2_lock_rsp *rsp = work->response_buf;
struct smb2_lock_element *lock_ele;
struct ksmbd_file *fp = NULL;
struct file_lock *flock = NULL;
struct ksmbd_conn *conn = work->conn;
int ret = 0;
- rsp_org = RESPONSE_BUF(work);
+ rsp_org = work->response_buf;
if (work->next_smb2_rcv_hdr_off) {
req = REQUEST_BUF_NEXT(work);
rsp = RESPONSE_BUF_NEXT(work);
id = work->compound_fid;
}
} else {
- req = REQUEST_BUF(work);
- rsp = RESPONSE_BUF(work);
+ req = work->request_buf;
+ rsp = work->response_buf;
}
if (!HAS_FILE_ID(id))
*/
static void smb20_oplock_break_ack(struct ksmbd_work *work)
{
- struct smb2_oplock_break *req = REQUEST_BUF(work);
- struct smb2_oplock_break *rsp = RESPONSE_BUF(work);
+ struct smb2_oplock_break *req = work->request_buf;
+ struct smb2_oplock_break *rsp = work->response_buf;
struct ksmbd_file *fp;
struct oplock_info *opinfo = NULL;
__le32 err = 0;
static void smb21_lease_break_ack(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
- struct smb2_lease_ack *req = REQUEST_BUF(work);
- struct smb2_lease_ack *rsp = RESPONSE_BUF(work);
+ struct smb2_lease_ack *req = work->request_buf;
+ struct smb2_lease_ack *rsp = work->response_buf;
struct oplock_info *opinfo;
__le32 err = 0;
int ret = 0;
*/
int smb2_oplock_break(struct ksmbd_work *work)
{
- struct smb2_oplock_break *req = REQUEST_BUF(work);
- struct smb2_oplock_break *rsp = RESPONSE_BUF(work);
+ struct smb2_oplock_break *req = work->request_buf;
+ struct smb2_oplock_break *rsp = work->response_buf;
switch (le16_to_cpu(req->StructureSize)) {
case OP_BREAK_STRUCT_SIZE_20:
*/
bool smb2_is_sign_req(struct ksmbd_work *work, unsigned int command)
{
- struct smb2_hdr *rcv_hdr2 = REQUEST_BUF(work);
+ struct smb2_hdr *rcv_hdr2 = work->request_buf;
if ((rcv_hdr2->Flags & SMB2_FLAGS_SIGNED) &&
command != SMB2_NEGOTIATE_HE &&
struct kvec iov[1];
size_t len;
- hdr_org = hdr = REQUEST_BUF(work);
+ hdr_org = hdr = work->request_buf;
if (work->next_smb2_rcv_hdr_off)
hdr = REQUEST_BUF_NEXT(work);
size_t len;
int n_vec = 1;
- hdr_org = hdr = RESPONSE_BUF(work);
+ hdr_org = hdr = work->response_buf;
if (work->next_smb2_rsp_hdr_off)
hdr = RESPONSE_BUF_NEXT(work);
iov[0].iov_base = (char *)&hdr->ProtocolId;
iov[0].iov_len = len;
- if (HAS_AUX_PAYLOAD(work)) {
- iov[0].iov_len -= AUX_PAYLOAD_SIZE(work);
+ if (work->aux_payload_sz) {
+ iov[0].iov_len -= work->aux_payload_sz;
- iov[1].iov_base = AUX_PAYLOAD(work);
- iov[1].iov_len = AUX_PAYLOAD_SIZE(work);
+ iov[1].iov_base = work->aux_payload_buf;
+ iov[1].iov_len = work->aux_payload_sz;
n_vec++;
}
struct kvec iov[1];
size_t len;
- hdr_org = hdr = REQUEST_BUF(work);
+ hdr_org = hdr = work->request_buf;
if (work->next_smb2_rcv_hdr_off)
hdr = REQUEST_BUF_NEXT(work);
size_t len;
char *signing_key;
- hdr_org = hdr = RESPONSE_BUF(work);
+ hdr_org = hdr = work->response_buf;
if (work->next_smb2_rsp_hdr_off)
hdr = RESPONSE_BUF_NEXT(work);
memset(hdr->Signature, 0, SMB2_SIGNATURE_SIZE);
iov[0].iov_base = (char *)&hdr->ProtocolId;
iov[0].iov_len = len;
- if (HAS_AUX_PAYLOAD(work)) {
- iov[0].iov_len -= AUX_PAYLOAD_SIZE(work);
- iov[1].iov_base = AUX_PAYLOAD(work);
- iov[1].iov_len = AUX_PAYLOAD_SIZE(work);
+ if (work->aux_payload_sz) {
+ iov[0].iov_len -= work->aux_payload_sz;
+ iov[1].iov_base = work->aux_payload_buf;
+ iov[1].iov_len = work->aux_payload_sz;
n_vec++;
}
int smb3_encrypt_resp(struct ksmbd_work *work)
{
- char *buf = RESPONSE_BUF(work);
+ char *buf = work->response_buf;
struct smb2_transform_hdr *tr_hdr;
struct kvec iov[3];
int rc = -ENOMEM;
- int buf_size = 0, rq_nvec = 2 + (HAS_AUX_PAYLOAD(work) ? 1 : 0);
+ int buf_size = 0, rq_nvec = 2 + (work->aux_payload_sz ? 1 : 0);
if (ARRAY_SIZE(iov) < rq_nvec)
return -ENOMEM;
iov[1].iov_base = buf + 4;
iov[1].iov_len = get_rfc1002_len(buf);
- if (HAS_AUX_PAYLOAD(work)) {
- iov[1].iov_len = RESP_HDR_SIZE(work) - 4;
+ if (work->aux_payload_sz) {
+ iov[1].iov_len = work->resp_hdr_sz - 4;
- iov[2].iov_base = AUX_PAYLOAD(work);
- iov[2].iov_len = AUX_PAYLOAD_SIZE(work);
+ iov[2].iov_base = work->aux_payload_buf;
+ iov[2].iov_len = work->aux_payload_sz;
buf_size += iov[2].iov_len;
}
buf_size += iov[1].iov_len;
{
struct ksmbd_conn *conn = work->conn;
struct ksmbd_session *sess;
- char *buf = REQUEST_BUF(work);
+ char *buf = work->request_buf;
struct smb2_hdr *hdr;
unsigned int pdu_length = get_rfc1002_len(buf);
struct kvec iov[2];
bool smb3_11_final_sess_setup_resp(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
- struct smb2_hdr *rsp = RESPONSE_BUF(work);
+ struct smb2_hdr *rsp = work->response_buf;
if (conn->dialect < SMB30_PROT_ID)
return false;