* [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.