All of lore.kernel.org
 help / color / mirror / Atom feed
* [cifs:for-next 4/4] fs//cifs/smb2pdu.c:571:15: error: 'struct TCP_Server_Info' has no member named 'vol'
@ 2017-09-16 21:26 kbuild test robot
       [not found] ` <201709170529.dbKK1sNR%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: kbuild test robot @ 2017-09-16 21:26 UTC (permalink / raw)
  To: Steve French
  Cc: kbuild-all-JC7UmRfGjtg, linux-cifs-u79uwXL29TY76Z2rM5mHXA,
	samba-technical-w/Ol4Ecudpl8XjKLYN78aQ

[-- Attachment #1: Type: text/plain, Size: 8634 bytes --]

tree:   git://git.samba.org/sfrench/cifs-2.6.git for-next
head:   2ec9565c80e8669de38db875a9af6db6f6c418b7
commit: 2ec9565c80e8669de38db875a9af6db6f6c418b7 [4/4] [SMB3] Add support for multidialect negotiate (SMB2.1 and later)
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 4.9.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 2ec9565c80e8669de38db875a9af6db6f6c418b7
        # save the attached .config to linux build tree
        make.cross ARCH=xtensa 

All errors (new ones prefixed by >>):

   fs//cifs/smb2pdu.c: In function 'SMB2_negotiate':
>> fs//cifs/smb2pdu.c:571:15: error: 'struct TCP_Server_Info' has no member named 'vol'
       ses->server->vol->ops = &smb21_operations;
                  ^

vim +571 fs//cifs/smb2pdu.c

   451	
   452	/*
   453	 *
   454	 *	SMB2 Worker functions follow:
   455	 *
   456	 *	The general structure of the worker functions is:
   457	 *	1) Call smb2_init (assembles SMB2 header)
   458	 *	2) Initialize SMB2 command specific fields in fixed length area of SMB
   459	 *	3) Call smb_sendrcv2 (sends request on socket and waits for response)
   460	 *	4) Decode SMB2 command specific fields in the fixed length area
   461	 *	5) Decode variable length data area (if any for this SMB2 command type)
   462	 *	6) Call free smb buffer
   463	 *	7) return
   464	 *
   465	 */
   466	
   467	int
   468	SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses)
   469	{
   470		struct smb2_negotiate_req *req;
   471		struct smb2_negotiate_rsp *rsp;
   472		struct kvec iov[1];
   473		struct kvec rsp_iov;
   474		int rc = 0;
   475		int resp_buftype;
   476		struct TCP_Server_Info *server = ses->server;
   477		int blob_offset, blob_length;
   478		char *security_blob;
   479		int flags = CIFS_NEG_OP;
   480	
   481		cifs_dbg(FYI, "Negotiate protocol\n");
   482	
   483		if (!server) {
   484			WARN(1, "%s: server is NULL!\n", __func__);
   485			return -EIO;
   486		}
   487	
   488		rc = small_smb2_init(SMB2_NEGOTIATE, NULL, (void **) &req);
   489		if (rc)
   490			return rc;
   491	
   492		req->hdr.sync_hdr.SessionId = 0;
   493	
   494		if (strcmp(ses->server->vals->version_string,
   495			SMB3ANY_VERSION_STRING) == 0) {
   496			req->Dialects[0] = cpu_to_le16(SMB30_PROT_ID);
   497			req->Dialects[1] = cpu_to_le16(SMB302_PROT_ID);
   498			req->DialectCount = cpu_to_le16(2);
   499			inc_rfc1001_len(req, 4);
   500		} else if (strcmp(ses->server->vals->version_string,
   501			SMB3DEFAULT_VERSION_STRING) == 0) {
   502			req->Dialects[0] = cpu_to_le16(SMB21_PROT_ID);
   503			req->Dialects[1] = cpu_to_le16(SMB30_PROT_ID);
   504			req->Dialects[2] = cpu_to_le16(SMB302_PROT_ID);
   505			req->DialectCount = cpu_to_le16(3);
   506			inc_rfc1001_len(req, 6);
   507		} else {
   508			/* otherwise send specific dialect */
   509			req->Dialects[0] = cpu_to_le16(ses->server->vals->protocol_id);
   510			req->DialectCount = cpu_to_le16(1);
   511			inc_rfc1001_len(req, 2);
   512		}
   513	
   514		/* only one of SMB2 signing flags may be set in SMB2 request */
   515		if (ses->sign)
   516			req->SecurityMode = cpu_to_le16(SMB2_NEGOTIATE_SIGNING_REQUIRED);
   517		else if (global_secflags & CIFSSEC_MAY_SIGN)
   518			req->SecurityMode = cpu_to_le16(SMB2_NEGOTIATE_SIGNING_ENABLED);
   519		else
   520			req->SecurityMode = 0;
   521	
   522		req->Capabilities = cpu_to_le32(ses->server->vals->req_capabilities);
   523	
   524		/* ClientGUID must be zero for SMB2.02 dialect */
   525		if (ses->server->vals->protocol_id == SMB20_PROT_ID)
   526			memset(req->ClientGUID, 0, SMB2_CLIENT_GUID_SIZE);
   527		else {
   528			memcpy(req->ClientGUID, server->client_guid,
   529				SMB2_CLIENT_GUID_SIZE);
   530			if (ses->server->vals->protocol_id == SMB311_PROT_ID)
   531				assemble_neg_contexts(req);
   532		}
   533		iov[0].iov_base = (char *)req;
   534		/* 4 for rfc1002 length field */
   535		iov[0].iov_len = get_rfc1002_length(req) + 4;
   536	
   537		rc = SendReceive2(xid, ses, iov, 1, &resp_buftype, flags, &rsp_iov);
   538		cifs_small_buf_release(req);
   539		rsp = (struct smb2_negotiate_rsp *)rsp_iov.iov_base;
   540		/*
   541		 * No tcon so can't do
   542		 * cifs_stats_inc(&tcon->stats.smb2_stats.smb2_com_fail[SMB2...]);
   543		 */
   544		if (rc == -EOPNOTSUPP) {
   545			cifs_dbg(VFS, "Dialect not supported by server. Consider "
   546				"specifying vers=1.0 or vers=2 on mount for accessing"
   547				" older servers\n");
   548			goto neg_exit;
   549		} else if (rc != 0)
   550			goto neg_exit;
   551	
   552		if (strcmp(ses->server->vals->version_string,
   553				SMB3ANY_VERSION_STRING) == 0) {
   554			if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
   555				cifs_dbg(VFS,
   556					"SMB2 dialect returned but not requested\n");
   557				return -EIO;
   558			} else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID)) {
   559				cifs_dbg(VFS,
   560					"SMB2.1 dialect returned but not requested\n");
   561				return -EIO;
   562			}
   563		} else if (strcmp(ses->server->vals->version_string,
   564				SMB3DEFAULT_VERSION_STRING) == 0) {
   565			if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
   566				cifs_dbg(VFS,
   567					"SMB2 dialect returned but not requested\n");
   568				return -EIO;
   569			} else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID)) {
   570				/* ops set to 3.0 by default for default so udpate */
 > 571				ses->server->vol->ops = &smb21_operations;
   572			}
   573		}
   574		/* BB add check that individually requested dialects match returned */
   575	
   576		cifs_dbg(FYI, "mode 0x%x\n", rsp->SecurityMode);
   577	
   578		if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
   579			cifs_dbg(FYI, "negotiated smb2.0 dialect\n");
   580		} else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID))
   581			cifs_dbg(FYI, "negotiated smb2.1 dialect\n");
   582		else if (rsp->DialectRevision == cpu_to_le16(SMB30_PROT_ID))
   583			cifs_dbg(FYI, "negotiated smb3.0 dialect\n");
   584		else if (rsp->DialectRevision == cpu_to_le16(SMB302_PROT_ID))
   585			cifs_dbg(FYI, "negotiated smb3.02 dialect\n");
   586	#ifdef CONFIG_CIFS_SMB311
   587		else if (rsp->DialectRevision == cpu_to_le16(SMB311_PROT_ID))
   588			cifs_dbg(FYI, "negotiated smb3.1.1 dialect\n");
   589	#endif /* SMB311 */
   590		else {
   591			cifs_dbg(VFS, "Illegal dialect returned by server 0x%x\n",
   592				 le16_to_cpu(rsp->DialectRevision));
   593			rc = -EIO;
   594			goto neg_exit;
   595		}
   596		server->dialect = le16_to_cpu(rsp->DialectRevision);
   597	
   598		/* BB: add check that dialect was valid given dialect(s) we asked for */
   599	
   600		/* SMB2 only has an extended negflavor */
   601		server->negflavor = CIFS_NEGFLAVOR_EXTENDED;
   602		/* set it to the maximum buffer size value we can send with 1 credit */
   603		server->maxBuf = min_t(unsigned int, le32_to_cpu(rsp->MaxTransactSize),
   604				       SMB2_MAX_BUFFER_SIZE);
   605		server->max_read = le32_to_cpu(rsp->MaxReadSize);
   606		server->max_write = le32_to_cpu(rsp->MaxWriteSize);
   607		/* BB Do we need to validate the SecurityMode? */
   608		server->sec_mode = le16_to_cpu(rsp->SecurityMode);
   609		server->capabilities = le32_to_cpu(rsp->Capabilities);
   610		/* Internal types */
   611		server->capabilities |= SMB2_NT_FIND | SMB2_LARGE_FILES;
   612	
   613		security_blob = smb2_get_data_area_len(&blob_offset, &blob_length,
   614						       &rsp->hdr);
   615		/*
   616		 * See MS-SMB2 section 2.2.4: if no blob, client picks default which
   617		 * for us will be
   618		 *	ses->sectype = RawNTLMSSP;
   619		 * but for time being this is our only auth choice so doesn't matter.
   620		 * We just found a server which sets blob length to zero expecting raw.
   621		 */
   622		if (blob_length == 0) {
   623			cifs_dbg(FYI, "missing security blob on negprot\n");
   624			server->sec_ntlmssp = true;
   625		}
   626	
   627		rc = cifs_enable_signing(server, ses->sign);
   628		if (rc)
   629			goto neg_exit;
   630		if (blob_length) {
   631			rc = decode_negTokenInit(security_blob, blob_length, server);
   632			if (rc == 1)
   633				rc = 0;
   634			else if (rc == 0)
   635				rc = -EIO;
   636		}
   637	neg_exit:
   638		free_rsp_buf(resp_buftype, rsp);
   639		return rc;
   640	}
   641	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 51566 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [cifs:for-next 4/4] fs//cifs/smb2pdu.c:571:15: error: 'struct TCP_Server_Info' has no member named 'vol'
       [not found] ` <201709170529.dbKK1sNR%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2017-09-17 15:16   ` Steve French
  0 siblings, 0 replies; 2+ messages in thread
From: Steve French @ 2017-09-17 15:16 UTC (permalink / raw)
  To: kbuild test robot, Pavel Shilovskiy
  Cc: kbuild-all-JC7UmRfGjtg, linux-cifs-u79uwXL29TY76Z2rM5mHXA,
	samba-technical

Fixed - repushed to cifs-2.6.git for-next

On Sat, Sep 16, 2017 at 4:26 PM, kbuild test robot
<fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> wrote:
> tree:   git://git.samba.org/sfrench/cifs-2.6.git for-next
> head:   2ec9565c80e8669de38db875a9af6db6f6c418b7
> commit: 2ec9565c80e8669de38db875a9af6db6f6c418b7 [4/4] [SMB3] Add support for multidialect negotiate (SMB2.1 and later)
> config: xtensa-allyesconfig (attached as .config)
> compiler: xtensa-linux-gcc (GCC) 4.9.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         git checkout 2ec9565c80e8669de38db875a9af6db6f6c418b7
>         # save the attached .config to linux build tree
>         make.cross ARCH=xtensa
>
> All errors (new ones prefixed by >>):
>
>    fs//cifs/smb2pdu.c: In function 'SMB2_negotiate':
>>> fs//cifs/smb2pdu.c:571:15: error: 'struct TCP_Server_Info' has no member named 'vol'
>        ses->server->vol->ops = &smb21_operations;
>                   ^
>
> vim +571 fs//cifs/smb2pdu.c
>
>    451
>    452  /*
>    453   *
>    454   *      SMB2 Worker functions follow:
>    455   *
>    456   *      The general structure of the worker functions is:
>    457   *      1) Call smb2_init (assembles SMB2 header)
>    458   *      2) Initialize SMB2 command specific fields in fixed length area of SMB
>    459   *      3) Call smb_sendrcv2 (sends request on socket and waits for response)
>    460   *      4) Decode SMB2 command specific fields in the fixed length area
>    461   *      5) Decode variable length data area (if any for this SMB2 command type)
>    462   *      6) Call free smb buffer
>    463   *      7) return
>    464   *
>    465   */
>    466
>    467  int
>    468  SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses)
>    469  {
>    470          struct smb2_negotiate_req *req;
>    471          struct smb2_negotiate_rsp *rsp;
>    472          struct kvec iov[1];
>    473          struct kvec rsp_iov;
>    474          int rc = 0;
>    475          int resp_buftype;
>    476          struct TCP_Server_Info *server = ses->server;
>    477          int blob_offset, blob_length;
>    478          char *security_blob;
>    479          int flags = CIFS_NEG_OP;
>    480
>    481          cifs_dbg(FYI, "Negotiate protocol\n");
>    482
>    483          if (!server) {
>    484                  WARN(1, "%s: server is NULL!\n", __func__);
>    485                  return -EIO;
>    486          }
>    487
>    488          rc = small_smb2_init(SMB2_NEGOTIATE, NULL, (void **) &req);
>    489          if (rc)
>    490                  return rc;
>    491
>    492          req->hdr.sync_hdr.SessionId = 0;
>    493
>    494          if (strcmp(ses->server->vals->version_string,
>    495                  SMB3ANY_VERSION_STRING) == 0) {
>    496                  req->Dialects[0] = cpu_to_le16(SMB30_PROT_ID);
>    497                  req->Dialects[1] = cpu_to_le16(SMB302_PROT_ID);
>    498                  req->DialectCount = cpu_to_le16(2);
>    499                  inc_rfc1001_len(req, 4);
>    500          } else if (strcmp(ses->server->vals->version_string,
>    501                  SMB3DEFAULT_VERSION_STRING) == 0) {
>    502                  req->Dialects[0] = cpu_to_le16(SMB21_PROT_ID);
>    503                  req->Dialects[1] = cpu_to_le16(SMB30_PROT_ID);
>    504                  req->Dialects[2] = cpu_to_le16(SMB302_PROT_ID);
>    505                  req->DialectCount = cpu_to_le16(3);
>    506                  inc_rfc1001_len(req, 6);
>    507          } else {
>    508                  /* otherwise send specific dialect */
>    509                  req->Dialects[0] = cpu_to_le16(ses->server->vals->protocol_id);
>    510                  req->DialectCount = cpu_to_le16(1);
>    511                  inc_rfc1001_len(req, 2);
>    512          }
>    513
>    514          /* only one of SMB2 signing flags may be set in SMB2 request */
>    515          if (ses->sign)
>    516                  req->SecurityMode = cpu_to_le16(SMB2_NEGOTIATE_SIGNING_REQUIRED);
>    517          else if (global_secflags & CIFSSEC_MAY_SIGN)
>    518                  req->SecurityMode = cpu_to_le16(SMB2_NEGOTIATE_SIGNING_ENABLED);
>    519          else
>    520                  req->SecurityMode = 0;
>    521
>    522          req->Capabilities = cpu_to_le32(ses->server->vals->req_capabilities);
>    523
>    524          /* ClientGUID must be zero for SMB2.02 dialect */
>    525          if (ses->server->vals->protocol_id == SMB20_PROT_ID)
>    526                  memset(req->ClientGUID, 0, SMB2_CLIENT_GUID_SIZE);
>    527          else {
>    528                  memcpy(req->ClientGUID, server->client_guid,
>    529                          SMB2_CLIENT_GUID_SIZE);
>    530                  if (ses->server->vals->protocol_id == SMB311_PROT_ID)
>    531                          assemble_neg_contexts(req);
>    532          }
>    533          iov[0].iov_base = (char *)req;
>    534          /* 4 for rfc1002 length field */
>    535          iov[0].iov_len = get_rfc1002_length(req) + 4;
>    536
>    537          rc = SendReceive2(xid, ses, iov, 1, &resp_buftype, flags, &rsp_iov);
>    538          cifs_small_buf_release(req);
>    539          rsp = (struct smb2_negotiate_rsp *)rsp_iov.iov_base;
>    540          /*
>    541           * No tcon so can't do
>    542           * cifs_stats_inc(&tcon->stats.smb2_stats.smb2_com_fail[SMB2...]);
>    543           */
>    544          if (rc == -EOPNOTSUPP) {
>    545                  cifs_dbg(VFS, "Dialect not supported by server. Consider "
>    546                          "specifying vers=1.0 or vers=2 on mount for accessing"
>    547                          " older servers\n");
>    548                  goto neg_exit;
>    549          } else if (rc != 0)
>    550                  goto neg_exit;
>    551
>    552          if (strcmp(ses->server->vals->version_string,
>    553                          SMB3ANY_VERSION_STRING) == 0) {
>    554                  if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
>    555                          cifs_dbg(VFS,
>    556                                  "SMB2 dialect returned but not requested\n");
>    557                          return -EIO;
>    558                  } else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID)) {
>    559                          cifs_dbg(VFS,
>    560                                  "SMB2.1 dialect returned but not requested\n");
>    561                          return -EIO;
>    562                  }
>    563          } else if (strcmp(ses->server->vals->version_string,
>    564                          SMB3DEFAULT_VERSION_STRING) == 0) {
>    565                  if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
>    566                          cifs_dbg(VFS,
>    567                                  "SMB2 dialect returned but not requested\n");
>    568                          return -EIO;
>    569                  } else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID)) {
>    570                          /* ops set to 3.0 by default for default so udpate */
>  > 571                          ses->server->vol->ops = &smb21_operations;
>    572                  }
>    573          }
>    574          /* BB add check that individually requested dialects match returned */
>    575
>    576          cifs_dbg(FYI, "mode 0x%x\n", rsp->SecurityMode);
>    577
>    578          if (rsp->DialectRevision == cpu_to_le16(SMB20_PROT_ID)) {
>    579                  cifs_dbg(FYI, "negotiated smb2.0 dialect\n");
>    580          } else if (rsp->DialectRevision == cpu_to_le16(SMB21_PROT_ID))
>    581                  cifs_dbg(FYI, "negotiated smb2.1 dialect\n");
>    582          else if (rsp->DialectRevision == cpu_to_le16(SMB30_PROT_ID))
>    583                  cifs_dbg(FYI, "negotiated smb3.0 dialect\n");
>    584          else if (rsp->DialectRevision == cpu_to_le16(SMB302_PROT_ID))
>    585                  cifs_dbg(FYI, "negotiated smb3.02 dialect\n");
>    586  #ifdef CONFIG_CIFS_SMB311
>    587          else if (rsp->DialectRevision == cpu_to_le16(SMB311_PROT_ID))
>    588                  cifs_dbg(FYI, "negotiated smb3.1.1 dialect\n");
>    589  #endif /* SMB311 */
>    590          else {
>    591                  cifs_dbg(VFS, "Illegal dialect returned by server 0x%x\n",
>    592                           le16_to_cpu(rsp->DialectRevision));
>    593                  rc = -EIO;
>    594                  goto neg_exit;
>    595          }
>    596          server->dialect = le16_to_cpu(rsp->DialectRevision);
>    597
>    598          /* BB: add check that dialect was valid given dialect(s) we asked for */
>    599
>    600          /* SMB2 only has an extended negflavor */
>    601          server->negflavor = CIFS_NEGFLAVOR_EXTENDED;
>    602          /* set it to the maximum buffer size value we can send with 1 credit */
>    603          server->maxBuf = min_t(unsigned int, le32_to_cpu(rsp->MaxTransactSize),
>    604                                 SMB2_MAX_BUFFER_SIZE);
>    605          server->max_read = le32_to_cpu(rsp->MaxReadSize);
>    606          server->max_write = le32_to_cpu(rsp->MaxWriteSize);
>    607          /* BB Do we need to validate the SecurityMode? */
>    608          server->sec_mode = le16_to_cpu(rsp->SecurityMode);
>    609          server->capabilities = le32_to_cpu(rsp->Capabilities);
>    610          /* Internal types */
>    611          server->capabilities |= SMB2_NT_FIND | SMB2_LARGE_FILES;
>    612
>    613          security_blob = smb2_get_data_area_len(&blob_offset, &blob_length,
>    614                                                 &rsp->hdr);
>    615          /*
>    616           * See MS-SMB2 section 2.2.4: if no blob, client picks default which
>    617           * for us will be
>    618           *      ses->sectype = RawNTLMSSP;
>    619           * but for time being this is our only auth choice so doesn't matter.
>    620           * We just found a server which sets blob length to zero expecting raw.
>    621           */
>    622          if (blob_length == 0) {
>    623                  cifs_dbg(FYI, "missing security blob on negprot\n");
>    624                  server->sec_ntlmssp = true;
>    625          }
>    626
>    627          rc = cifs_enable_signing(server, ses->sign);
>    628          if (rc)
>    629                  goto neg_exit;
>    630          if (blob_length) {
>    631                  rc = decode_negTokenInit(security_blob, blob_length, server);
>    632                  if (rc == 1)
>    633                          rc = 0;
>    634                  else if (rc == 0)
>    635                          rc = -EIO;
>    636          }
>    637  neg_exit:
>    638          free_rsp_buf(resp_buftype, rsp);
>    639          return rc;
>    640  }
>    641
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



-- 
Thanks,

Steve

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-09-17 15:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-16 21:26 [cifs:for-next 4/4] fs//cifs/smb2pdu.c:571:15: error: 'struct TCP_Server_Info' has no member named 'vol' kbuild test robot
     [not found] ` <201709170529.dbKK1sNR%fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-09-17 15:16   ` Steve French

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.