Commit d291e703 authored by Zhang Xiaoxu's avatar Zhang Xiaoxu Committed by Steve French
Browse files

cifs: Add helper function to check smb1+ server



SMB1 server's header_preamble_size is not 0, add use is_smb1 function
to simplify the code, no actual functional changes.

Reviewed-by: default avatarPaulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: default avatarZhang Xiaoxu <zhangxiaoxu5@huawei.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent b6b3624d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -32,10 +32,9 @@ int __cifs_calc_signature(struct smb_rqst *rqst,
	int rc;
	struct kvec *iov = rqst->rq_iov;
	int n_vec = rqst->rq_nvec;
	bool is_smb2 = HEADER_PREAMBLE_SIZE(server) == 0;

	/* iov[0] is actual data and not the rfc1002 length for SMB2+ */
	if (is_smb2) {
	if (!is_smb1(server)) {
		if (iov[0].iov_len <= 4)
			return -EIO;
		i = 0;
+5 −0
Original line number Diff line number Diff line
@@ -752,6 +752,11 @@ struct TCP_Server_Info {
#endif
};

static inline bool is_smb1(struct TCP_Server_Info *server)
{
	return HEADER_PREAMBLE_SIZE(server) != 0;
}

static inline void cifs_server_lock(struct TCP_Server_Info *server)
{
	unsigned int nofs_flag = memalloc_nofs_save();
+5 −5
Original line number Diff line number Diff line
@@ -871,7 +871,7 @@ smb2_get_credits_from_hdr(char *buffer, struct TCP_Server_Info *server)
	/*
	 * SMB1 does not use credits.
	 */
	if (HEADER_PREAMBLE_SIZE(server))
	if (is_smb1(server))
		return 0;

	return le16_to_cpu(shdr->CreditRequest);
@@ -1121,7 +1121,7 @@ smb2_add_credits_from_hdr(char *buffer, struct TCP_Server_Info *server)
	/*
	 * SMB1 does not use credits.
	 */
	if (HEADER_PREAMBLE_SIZE(server))
	if (is_smb1(server))
		return;

	if (shdr->CreditRequest) {
@@ -1179,10 +1179,10 @@ cifs_demultiplex_thread(void *p)
		if (length < 0)
			continue;

		if (HEADER_PREAMBLE_SIZE(server) == 0)
			server->total_read = 0;
		else
		if (is_smb1(server))
			server->total_read = length;
		else
			server->total_read = 0;

		/*
		 * The right amount was read from socket - 4 bytes,
+2 −2
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ smb_rqst_len(struct TCP_Server_Info *server, struct smb_rqst *rqst)
	int nvec;
	unsigned long buflen = 0;

	if (HEADER_PREAMBLE_SIZE(server) == 0 && rqst->rq_nvec >= 2 &&
	if (!is_smb1(server) && rqst->rq_nvec >= 2 &&
	    rqst->rq_iov[0].iov_len == 4) {
		iov = &rqst->rq_iov[1];
		nvec = rqst->rq_nvec - 1;
@@ -346,7 +346,7 @@ __smb_send_rqst(struct TCP_Server_Info *server, int num_rqst,
	sigprocmask(SIG_BLOCK, &mask, &oldmask);

	/* Generate a rfc1002 marker for SMB2+ */
	if (HEADER_PREAMBLE_SIZE(server) == 0) {
	if (!is_smb1(server)) {
		struct kvec hiov = {
			.iov_base = &rfc1002_marker,
			.iov_len  = 4