* [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
@ 2020-02-06 22:26 kbuild test robot
2020-02-06 22:47 ` Steve French
0 siblings, 1 reply; 6+ messages in thread
From: kbuild test robot @ 2020-02-06 22:26 UTC (permalink / raw)
To: Steve French; +Cc: kbuild-all, linux-cifs, samba-technical, Aurelien Aptel
[-- Attachment #1: Type: text/plain, Size: 3499 bytes --]
tree: git://git.samba.org/sfrench/cifs-2.6.git for-next
head: 58b322cfd219fd570d4fcc2e2eb8b5d945389d46
commit: 3d9d8c48232a668ada5f680f70c8b3d366629ab6 [10/11] smb3: print warning once if posix context returned on open
config: m68k-multi_defconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 7.5.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 3d9d8c48232a668ada5f680f70c8b3d366629ab6
# save the attached .config to linux build tree
GCC_VERSION=7.5.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
fs/cifs/smb2pdu.c: In function 'smb2_parse_contexts':
>> fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
^
>> fs/cifs/smb2pdu.c:1983:8: error: 'memcmp' undeclared (first use in this function); did you mean 'memchr'?
if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
^~~~~~
memchr
fs/cifs/smb2pdu.c:1983:8: note: each undeclared identifier is reported only once for each function it appears in
vim +/memcmp +1985 fs/cifs/smb2pdu.c
1951
1952 void
1953 smb2_parse_contexts(struct TCP_Server_Info *server,
1954 struct smb2_create_rsp *rsp,
1955 unsigned int *epoch, char *lease_key, __u8 *oplock,
1956 struct smb2_file_all_info *buf)
1957 {
1958 char *data_offset;
1959 struct create_context *cc;
1960 unsigned int next;
1961 unsigned int remaining;
1962 char *name;
1963
1964 *oplock = 0;
1965 data_offset = (char *)rsp + le32_to_cpu(rsp->CreateContextsOffset);
1966 remaining = le32_to_cpu(rsp->CreateContextsLength);
1967 cc = (struct create_context *)data_offset;
1968
1969 /* Initialize inode number to 0 in case no valid data in qfid context */
1970 if (buf)
1971 buf->IndexNumber = 0;
1972
1973 while (remaining >= sizeof(struct create_context)) {
1974 name = le16_to_cpu(cc->NameOffset) + (char *)cc;
1975 if (le16_to_cpu(cc->NameLength) == 4 &&
1976 strncmp(name, SMB2_CREATE_REQUEST_LEASE, 4) == 0)
1977 *oplock = server->ops->parse_lease_buf(cc, epoch,
1978 lease_key);
1979 else if (buf && (le16_to_cpu(cc->NameLength) == 4) &&
1980 strncmp(name, SMB2_CREATE_QUERY_ON_DISK_ID, 4) == 0)
1981 parse_query_id_ctxt(cc, buf);
1982 else if ((le16_to_cpu(cc->NameLength) == 16)) {
> 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4, 0x23, 0x83,
> 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
1986 parse_posix_ctxt(cc, NULL);
1987 }
1988 /* else {
1989 cifs_dbg(FYI, "Context not matched with len %d\n",
1990 le16_to_cpu(cc->NameLength));
1991 cifs_dump_mem("Cctxt name: ", name, 4);
1992 } */
1993
1994 next = le32_to_cpu(cc->Next);
1995 if (!next)
1996 break;
1997 remaining -= next;
1998 cc = (struct create_context *)((char *)cc + next);
1999 }
2000
2001 if (rsp->OplockLevel != SMB2_OPLOCK_LEVEL_LEASE)
2002 *oplock = rsp->OplockLevel;
2003
2004 return;
2005 }
2006
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 16863 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
2020-02-06 22:26 [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3 kbuild test robot
@ 2020-02-06 22:47 ` Steve French
2020-02-06 23:16 ` ronnie sahlberg
0 siblings, 1 reply; 6+ messages in thread
From: Steve French @ 2020-02-06 22:47 UTC (permalink / raw)
To: kbuild test robot; +Cc: CIFS, Aurélien Aptel
It compiled and tested ok. Is this warning a limitation of the kbuild robot?
On Thu, Feb 6, 2020 at 4:26 PM kbuild test robot <lkp@intel.com> wrote:
>
> tree: git://git.samba.org/sfrench/cifs-2.6.git for-next
> head: 58b322cfd219fd570d4fcc2e2eb8b5d945389d46
> commit: 3d9d8c48232a668ada5f680f70c8b3d366629ab6 [10/11] smb3: print warning once if posix context returned on open
> config: m68k-multi_defconfig (attached as .config)
> compiler: m68k-linux-gcc (GCC) 7.5.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 3d9d8c48232a668ada5f680f70c8b3d366629ab6
> # save the attached .config to linux build tree
> GCC_VERSION=7.5.0 make.cross ARCH=m68k
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> fs/cifs/smb2pdu.c: In function 'smb2_parse_contexts':
> >> fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
> 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> ^
> >> fs/cifs/smb2pdu.c:1983:8: error: 'memcmp' undeclared (first use in this function); did you mean 'memchr'?
> if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> ^~~~~~
> memchr
> fs/cifs/smb2pdu.c:1983:8: note: each undeclared identifier is reported only once for each function it appears in
>
> vim +/memcmp +1985 fs/cifs/smb2pdu.c
>
> 1951
> 1952 void
> 1953 smb2_parse_contexts(struct TCP_Server_Info *server,
> 1954 struct smb2_create_rsp *rsp,
> 1955 unsigned int *epoch, char *lease_key, __u8 *oplock,
> 1956 struct smb2_file_all_info *buf)
> 1957 {
> 1958 char *data_offset;
> 1959 struct create_context *cc;
> 1960 unsigned int next;
> 1961 unsigned int remaining;
> 1962 char *name;
> 1963
> 1964 *oplock = 0;
> 1965 data_offset = (char *)rsp + le32_to_cpu(rsp->CreateContextsOffset);
> 1966 remaining = le32_to_cpu(rsp->CreateContextsLength);
> 1967 cc = (struct create_context *)data_offset;
> 1968
> 1969 /* Initialize inode number to 0 in case no valid data in qfid context */
> 1970 if (buf)
> 1971 buf->IndexNumber = 0;
> 1972
> 1973 while (remaining >= sizeof(struct create_context)) {
> 1974 name = le16_to_cpu(cc->NameOffset) + (char *)cc;
> 1975 if (le16_to_cpu(cc->NameLength) == 4 &&
> 1976 strncmp(name, SMB2_CREATE_REQUEST_LEASE, 4) == 0)
> 1977 *oplock = server->ops->parse_lease_buf(cc, epoch,
> 1978 lease_key);
> 1979 else if (buf && (le16_to_cpu(cc->NameLength) == 4) &&
> 1980 strncmp(name, SMB2_CREATE_QUERY_ON_DISK_ID, 4) == 0)
> 1981 parse_query_id_ctxt(cc, buf);
> 1982 else if ((le16_to_cpu(cc->NameLength) == 16)) {
> > 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> 1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4, 0x23, 0x83,
> > 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> 1986 parse_posix_ctxt(cc, NULL);
> 1987 }
> 1988 /* else {
> 1989 cifs_dbg(FYI, "Context not matched with len %d\n",
> 1990 le16_to_cpu(cc->NameLength));
> 1991 cifs_dump_mem("Cctxt name: ", name, 4);
> 1992 } */
> 1993
> 1994 next = le32_to_cpu(cc->Next);
> 1995 if (!next)
> 1996 break;
> 1997 remaining -= next;
> 1998 cc = (struct create_context *)((char *)cc + next);
> 1999 }
> 2000
> 2001 if (rsp->OplockLevel != SMB2_OPLOCK_LEVEL_LEASE)
> 2002 *oplock = rsp->OplockLevel;
> 2003
> 2004 return;
> 2005 }
> 2006
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
2020-02-06 22:47 ` Steve French
@ 2020-02-06 23:16 ` ronnie sahlberg
2020-02-06 23:33 ` Steve French
0 siblings, 1 reply; 6+ messages in thread
From: ronnie sahlberg @ 2020-02-06 23:16 UTC (permalink / raw)
To: Steve French; +Cc: kbuild test robot, CIFS, Aurélien Aptel
It is probably that m68k lage quite behind in GCC versions and
probably that compiler can not handle this construct:
> 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4,
0x23, 0x83,
> 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
and you would probably need something like this:
const char foo[] = {0x93, 0xAD, 0x25, 0x50, 0x9C, 0xB4, 0x11,
0xE7, 0xB4, 0x23, 0x83, 0xDE, 0x96, 0x8B, 0xCD, 0x7C};
if (memcmp(name, foo, sizeof(foo)) == 0)
...
On Fri, Feb 7, 2020 at 8:48 AM Steve French <smfrench@gmail.com> wrote:
>
> It compiled and tested ok. Is this warning a limitation of the kbuild robot?
>
> On Thu, Feb 6, 2020 at 4:26 PM kbuild test robot <lkp@intel.com> wrote:
> >
> > tree: git://git.samba.org/sfrench/cifs-2.6.git for-next
> > head: 58b322cfd219fd570d4fcc2e2eb8b5d945389d46
> > commit: 3d9d8c48232a668ada5f680f70c8b3d366629ab6 [10/11] smb3: print warning once if posix context returned on open
> > config: m68k-multi_defconfig (attached as .config)
> > compiler: m68k-linux-gcc (GCC) 7.5.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 3d9d8c48232a668ada5f680f70c8b3d366629ab6
> > # save the attached .config to linux build tree
> > GCC_VERSION=7.5.0 make.cross ARCH=m68k
> >
> > If you fix the issue, kindly add following tag
> > Reported-by: kbuild test robot <lkp@intel.com>
> >
> > All errors (new ones prefixed by >>):
> >
> > fs/cifs/smb2pdu.c: In function 'smb2_parse_contexts':
> > >> fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
> > 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> > ^
> > >> fs/cifs/smb2pdu.c:1983:8: error: 'memcmp' undeclared (first use in this function); did you mean 'memchr'?
> > if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> > ^~~~~~
> > memchr
> > fs/cifs/smb2pdu.c:1983:8: note: each undeclared identifier is reported only once for each function it appears in
> >
> > vim +/memcmp +1985 fs/cifs/smb2pdu.c
> >
> > 1951
> > 1952 void
> > 1953 smb2_parse_contexts(struct TCP_Server_Info *server,
> > 1954 struct smb2_create_rsp *rsp,
> > 1955 unsigned int *epoch, char *lease_key, __u8 *oplock,
> > 1956 struct smb2_file_all_info *buf)
> > 1957 {
> > 1958 char *data_offset;
> > 1959 struct create_context *cc;
> > 1960 unsigned int next;
> > 1961 unsigned int remaining;
> > 1962 char *name;
> > 1963
> > 1964 *oplock = 0;
> > 1965 data_offset = (char *)rsp + le32_to_cpu(rsp->CreateContextsOffset);
> > 1966 remaining = le32_to_cpu(rsp->CreateContextsLength);
> > 1967 cc = (struct create_context *)data_offset;
> > 1968
> > 1969 /* Initialize inode number to 0 in case no valid data in qfid context */
> > 1970 if (buf)
> > 1971 buf->IndexNumber = 0;
> > 1972
> > 1973 while (remaining >= sizeof(struct create_context)) {
> > 1974 name = le16_to_cpu(cc->NameOffset) + (char *)cc;
> > 1975 if (le16_to_cpu(cc->NameLength) == 4 &&
> > 1976 strncmp(name, SMB2_CREATE_REQUEST_LEASE, 4) == 0)
> > 1977 *oplock = server->ops->parse_lease_buf(cc, epoch,
> > 1978 lease_key);
> > 1979 else if (buf && (le16_to_cpu(cc->NameLength) == 4) &&
> > 1980 strncmp(name, SMB2_CREATE_QUERY_ON_DISK_ID, 4) == 0)
> > 1981 parse_query_id_ctxt(cc, buf);
> > 1982 else if ((le16_to_cpu(cc->NameLength) == 16)) {
> > > 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> > 1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4, 0x23, 0x83,
> > > 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> > 1986 parse_posix_ctxt(cc, NULL);
> > 1987 }
> > 1988 /* else {
> > 1989 cifs_dbg(FYI, "Context not matched with len %d\n",
> > 1990 le16_to_cpu(cc->NameLength));
> > 1991 cifs_dump_mem("Cctxt name: ", name, 4);
> > 1992 } */
> > 1993
> > 1994 next = le32_to_cpu(cc->Next);
> > 1995 if (!next)
> > 1996 break;
> > 1997 remaining -= next;
> > 1998 cc = (struct create_context *)((char *)cc + next);
> > 1999 }
> > 2000
> > 2001 if (rsp->OplockLevel != SMB2_OPLOCK_LEVEL_LEASE)
> > 2002 *oplock = rsp->OplockLevel;
> > 2003
> > 2004 return;
> > 2005 }
> > 2006
> >
> > ---
> > 0-DAY CI Kernel Test Service, Intel Corporation
> > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>
>
>
> --
> Thanks,
>
> Steve
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
2020-02-06 23:16 ` ronnie sahlberg
@ 2020-02-06 23:33 ` Steve French
2020-02-07 0:34 ` ronnie sahlberg
2020-02-07 8:12 ` Geert Uytterhoeven
0 siblings, 2 replies; 6+ messages in thread
From: Steve French @ 2020-02-06 23:33 UTC (permalink / raw)
To: ronnie sahlberg
Cc: kbuild test robot, CIFS, Aurélien Aptel, samba-technical,
Pavel Shilovsky
[-- Attachment #1: Type: text/plain, Size: 5772 bytes --]
ok - changed as suggested. Tested out ok
See attached.
On Thu, Feb 6, 2020 at 5:16 PM ronnie sahlberg <ronniesahlberg@gmail.com> wrote:
>
> It is probably that m68k lage quite behind in GCC versions and
> probably that compiler can not handle this construct:
> > 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> 1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4,
> 0x23, 0x83,
> > 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> and you would probably need something like this:
> const char foo[] = {0x93, 0xAD, 0x25, 0x50, 0x9C, 0xB4, 0x11,
> 0xE7, 0xB4, 0x23, 0x83, 0xDE, 0x96, 0x8B, 0xCD, 0x7C};
> if (memcmp(name, foo, sizeof(foo)) == 0)
> ...
>
> On Fri, Feb 7, 2020 at 8:48 AM Steve French <smfrench@gmail.com> wrote:
> >
> > It compiled and tested ok. Is this warning a limitation of the kbuild robot?
> >
> > On Thu, Feb 6, 2020 at 4:26 PM kbuild test robot <lkp@intel.com> wrote:
> > >
> > > tree: git://git.samba.org/sfrench/cifs-2.6.git for-next
> > > head: 58b322cfd219fd570d4fcc2e2eb8b5d945389d46
> > > commit: 3d9d8c48232a668ada5f680f70c8b3d366629ab6 [10/11] smb3: print warning once if posix context returned on open
> > > config: m68k-multi_defconfig (attached as .config)
> > > compiler: m68k-linux-gcc (GCC) 7.5.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 3d9d8c48232a668ada5f680f70c8b3d366629ab6
> > > # save the attached .config to linux build tree
> > > GCC_VERSION=7.5.0 make.cross ARCH=m68k
> > >
> > > If you fix the issue, kindly add following tag
> > > Reported-by: kbuild test robot <lkp@intel.com>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > > fs/cifs/smb2pdu.c: In function 'smb2_parse_contexts':
> > > >> fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
> > > 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> > > ^
> > > >> fs/cifs/smb2pdu.c:1983:8: error: 'memcmp' undeclared (first use in this function); did you mean 'memchr'?
> > > if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> > > ^~~~~~
> > > memchr
> > > fs/cifs/smb2pdu.c:1983:8: note: each undeclared identifier is reported only once for each function it appears in
> > >
> > > vim +/memcmp +1985 fs/cifs/smb2pdu.c
> > >
> > > 1951
> > > 1952 void
> > > 1953 smb2_parse_contexts(struct TCP_Server_Info *server,
> > > 1954 struct smb2_create_rsp *rsp,
> > > 1955 unsigned int *epoch, char *lease_key, __u8 *oplock,
> > > 1956 struct smb2_file_all_info *buf)
> > > 1957 {
> > > 1958 char *data_offset;
> > > 1959 struct create_context *cc;
> > > 1960 unsigned int next;
> > > 1961 unsigned int remaining;
> > > 1962 char *name;
> > > 1963
> > > 1964 *oplock = 0;
> > > 1965 data_offset = (char *)rsp + le32_to_cpu(rsp->CreateContextsOffset);
> > > 1966 remaining = le32_to_cpu(rsp->CreateContextsLength);
> > > 1967 cc = (struct create_context *)data_offset;
> > > 1968
> > > 1969 /* Initialize inode number to 0 in case no valid data in qfid context */
> > > 1970 if (buf)
> > > 1971 buf->IndexNumber = 0;
> > > 1972
> > > 1973 while (remaining >= sizeof(struct create_context)) {
> > > 1974 name = le16_to_cpu(cc->NameOffset) + (char *)cc;
> > > 1975 if (le16_to_cpu(cc->NameLength) == 4 &&
> > > 1976 strncmp(name, SMB2_CREATE_REQUEST_LEASE, 4) == 0)
> > > 1977 *oplock = server->ops->parse_lease_buf(cc, epoch,
> > > 1978 lease_key);
> > > 1979 else if (buf && (le16_to_cpu(cc->NameLength) == 4) &&
> > > 1980 strncmp(name, SMB2_CREATE_QUERY_ON_DISK_ID, 4) == 0)
> > > 1981 parse_query_id_ctxt(cc, buf);
> > > 1982 else if ((le16_to_cpu(cc->NameLength) == 16)) {
> > > > 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> > > 1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4, 0x23, 0x83,
> > > > 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> > > 1986 parse_posix_ctxt(cc, NULL);
> > > 1987 }
> > > 1988 /* else {
> > > 1989 cifs_dbg(FYI, "Context not matched with len %d\n",
> > > 1990 le16_to_cpu(cc->NameLength));
> > > 1991 cifs_dump_mem("Cctxt name: ", name, 4);
> > > 1992 } */
> > > 1993
> > > 1994 next = le32_to_cpu(cc->Next);
> > > 1995 if (!next)
> > > 1996 break;
> > > 1997 remaining -= next;
> > > 1998 cc = (struct create_context *)((char *)cc + next);
> > > 1999 }
> > > 2000
> > > 2001 if (rsp->OplockLevel != SMB2_OPLOCK_LEVEL_LEASE)
> > > 2002 *oplock = rsp->OplockLevel;
> > > 2003
> > > 2004 return;
> > > 2005 }
> > > 2006
> > >
> > > ---
> > > 0-DAY CI Kernel Test Service, Intel Corporation
> > > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> >
> >
> >
> > --
> > Thanks,
> >
> > Steve
--
Thanks,
Steve
[-- Attachment #2: 0001-smb3-print-warning-once-if-posix-context-returned-on.patch --]
[-- Type: text/x-patch, Size: 2676 bytes --]
From ab3459d8f0ef52c38119ed58c4c29139efc7022c Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@microsoft.com>
Date: Thu, 6 Feb 2020 17:31:56 -0600
Subject: [PATCH 1/2] smb3: print warning once if posix context returned on
open
SMB3.1.1 POSIX Context processing is not complete yet - so print warning
(once) if server returns it on open.
Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
---
fs/cifs/smb2pdu.c | 22 ++++++++++++++++++++++
fs/cifs/smb2pdu.h | 8 ++++++++
2 files changed, 30 insertions(+)
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 47cce0bd1afe..1234f9ccab03 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -1939,6 +1939,16 @@ parse_query_id_ctxt(struct create_context *cc, struct smb2_file_all_info *buf)
buf->IndexNumber = pdisk_id->DiskFileId;
}
+static void
+parse_posix_ctxt(struct create_context *cc, struct smb_posix_info *pposix_inf)
+{
+ /* struct smb_posix_info *ppinf = (struct smb_posix_info *)cc; */
+
+ /* TODO: Need to add parsing for the context and return */
+ printk_once(KERN_WARNING
+ "SMB3 3.11 POSIX response context not completed yet\n");
+}
+
void
smb2_parse_contexts(struct TCP_Server_Info *server,
struct smb2_create_rsp *rsp,
@@ -1950,6 +1960,9 @@ smb2_parse_contexts(struct TCP_Server_Info *server,
unsigned int next;
unsigned int remaining;
char *name;
+ const char smb3_create_tag_posix[] = {0x93, 0xAD, 0x25, 0x50, 0x9C,
+ 0xB4, 0x11, 0xE7, 0xB4, 0x23, 0x83,
+ 0xDE, 0x96, 0x8B, 0xCD, 0x7C};
*oplock = 0;
data_offset = (char *)rsp + le32_to_cpu(rsp->CreateContextsOffset);
@@ -1969,6 +1982,15 @@ smb2_parse_contexts(struct TCP_Server_Info *server,
else if (buf && (le16_to_cpu(cc->NameLength) == 4) &&
strncmp(name, SMB2_CREATE_QUERY_ON_DISK_ID, 4) == 0)
parse_query_id_ctxt(cc, buf);
+ else if ((le16_to_cpu(cc->NameLength) == 16)) {
+ if (memcmp(name, smb3_create_tag_posix, 16) == 0)
+ parse_posix_ctxt(cc, NULL);
+ }
+ /* else {
+ cifs_dbg(FYI, "Context not matched with len %d\n",
+ le16_to_cpu(cc->NameLength));
+ cifs_dump_mem("Cctxt name: ", name, 4);
+ } */
next = le32_to_cpu(cc->Next);
if (!next)
diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h
index 4c43dbd1e089..ca2123d7f199 100644
--- a/fs/cifs/smb2pdu.h
+++ b/fs/cifs/smb2pdu.h
@@ -1595,4 +1595,12 @@ struct smb2_file_network_open_info {
extern char smb2_padding[7];
+/* equivalent of the contents of SMB3.1.1 POSIX open context response */
+struct smb_posix_info {
+ __le32 nlink;
+ __le32 reparse_tag;
+ __le32 mode;
+ kuid_t uid;
+ kuid_t gid;
+};
#endif /* _SMB2PDU_H */
--
2.20.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
2020-02-06 23:33 ` Steve French
@ 2020-02-07 0:34 ` ronnie sahlberg
2020-02-07 8:12 ` Geert Uytterhoeven
1 sibling, 0 replies; 6+ messages in thread
From: ronnie sahlberg @ 2020-02-07 0:34 UTC (permalink / raw)
To: Steve French
Cc: kbuild test robot, CIFS, Aurélien Aptel, samba-technical,
Pavel Shilovsky
Looks good to me.
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
On Fri, Feb 7, 2020 at 9:33 AM Steve French <smfrench@gmail.com> wrote:
>
> ok - changed as suggested. Tested out ok
>
> See attached.
>
> On Thu, Feb 6, 2020 at 5:16 PM ronnie sahlberg <ronniesahlberg@gmail.com> wrote:
> >
> > It is probably that m68k lage quite behind in GCC versions and
> > probably that compiler can not handle this construct:
> > > 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> > 1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4,
> > 0x23, 0x83,
> > > 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> > and you would probably need something like this:
> > const char foo[] = {0x93, 0xAD, 0x25, 0x50, 0x9C, 0xB4, 0x11,
> > 0xE7, 0xB4, 0x23, 0x83, 0xDE, 0x96, 0x8B, 0xCD, 0x7C};
> > if (memcmp(name, foo, sizeof(foo)) == 0)
> > ...
> >
> > On Fri, Feb 7, 2020 at 8:48 AM Steve French <smfrench@gmail.com> wrote:
> > >
> > > It compiled and tested ok. Is this warning a limitation of the kbuild robot?
> > >
> > > On Thu, Feb 6, 2020 at 4:26 PM kbuild test robot <lkp@intel.com> wrote:
> > > >
> > > > tree: git://git.samba.org/sfrench/cifs-2.6.git for-next
> > > > head: 58b322cfd219fd570d4fcc2e2eb8b5d945389d46
> > > > commit: 3d9d8c48232a668ada5f680f70c8b3d366629ab6 [10/11] smb3: print warning once if posix context returned on open
> > > > config: m68k-multi_defconfig (attached as .config)
> > > > compiler: m68k-linux-gcc (GCC) 7.5.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 3d9d8c48232a668ada5f680f70c8b3d366629ab6
> > > > # save the attached .config to linux build tree
> > > > GCC_VERSION=7.5.0 make.cross ARCH=m68k
> > > >
> > > > If you fix the issue, kindly add following tag
> > > > Reported-by: kbuild test robot <lkp@intel.com>
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > > fs/cifs/smb2pdu.c: In function 'smb2_parse_contexts':
> > > > >> fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
> > > > 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> > > > ^
> > > > >> fs/cifs/smb2pdu.c:1983:8: error: 'memcmp' undeclared (first use in this function); did you mean 'memchr'?
> > > > if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> > > > ^~~~~~
> > > > memchr
> > > > fs/cifs/smb2pdu.c:1983:8: note: each undeclared identifier is reported only once for each function it appears in
> > > >
> > > > vim +/memcmp +1985 fs/cifs/smb2pdu.c
> > > >
> > > > 1951
> > > > 1952 void
> > > > 1953 smb2_parse_contexts(struct TCP_Server_Info *server,
> > > > 1954 struct smb2_create_rsp *rsp,
> > > > 1955 unsigned int *epoch, char *lease_key, __u8 *oplock,
> > > > 1956 struct smb2_file_all_info *buf)
> > > > 1957 {
> > > > 1958 char *data_offset;
> > > > 1959 struct create_context *cc;
> > > > 1960 unsigned int next;
> > > > 1961 unsigned int remaining;
> > > > 1962 char *name;
> > > > 1963
> > > > 1964 *oplock = 0;
> > > > 1965 data_offset = (char *)rsp + le32_to_cpu(rsp->CreateContextsOffset);
> > > > 1966 remaining = le32_to_cpu(rsp->CreateContextsLength);
> > > > 1967 cc = (struct create_context *)data_offset;
> > > > 1968
> > > > 1969 /* Initialize inode number to 0 in case no valid data in qfid context */
> > > > 1970 if (buf)
> > > > 1971 buf->IndexNumber = 0;
> > > > 1972
> > > > 1973 while (remaining >= sizeof(struct create_context)) {
> > > > 1974 name = le16_to_cpu(cc->NameOffset) + (char *)cc;
> > > > 1975 if (le16_to_cpu(cc->NameLength) == 4 &&
> > > > 1976 strncmp(name, SMB2_CREATE_REQUEST_LEASE, 4) == 0)
> > > > 1977 *oplock = server->ops->parse_lease_buf(cc, epoch,
> > > > 1978 lease_key);
> > > > 1979 else if (buf && (le16_to_cpu(cc->NameLength) == 4) &&
> > > > 1980 strncmp(name, SMB2_CREATE_QUERY_ON_DISK_ID, 4) == 0)
> > > > 1981 parse_query_id_ctxt(cc, buf);
> > > > 1982 else if ((le16_to_cpu(cc->NameLength) == 16)) {
> > > > > 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
> > > > 1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4, 0x23, 0x83,
> > > > > 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
> > > > 1986 parse_posix_ctxt(cc, NULL);
> > > > 1987 }
> > > > 1988 /* else {
> > > > 1989 cifs_dbg(FYI, "Context not matched with len %d\n",
> > > > 1990 le16_to_cpu(cc->NameLength));
> > > > 1991 cifs_dump_mem("Cctxt name: ", name, 4);
> > > > 1992 } */
> > > > 1993
> > > > 1994 next = le32_to_cpu(cc->Next);
> > > > 1995 if (!next)
> > > > 1996 break;
> > > > 1997 remaining -= next;
> > > > 1998 cc = (struct create_context *)((char *)cc + next);
> > > > 1999 }
> > > > 2000
> > > > 2001 if (rsp->OplockLevel != SMB2_OPLOCK_LEVEL_LEASE)
> > > > 2002 *oplock = rsp->OplockLevel;
> > > > 2003
> > > > 2004 return;
> > > > 2005 }
> > > > 2006
> > > >
> > > > ---
> > > > 0-DAY CI Kernel Test Service, Intel Corporation
> > > > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> > >
> > >
> > >
> > > --
> > > Thanks,
> > >
> > > Steve
>
>
>
> --
> Thanks,
>
> Steve
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
2020-02-06 23:33 ` Steve French
2020-02-07 0:34 ` ronnie sahlberg
@ 2020-02-07 8:12 ` Geert Uytterhoeven
1 sibling, 0 replies; 6+ messages in thread
From: Geert Uytterhoeven @ 2020-02-07 8:12 UTC (permalink / raw)
To: Steve French
Cc: ronnie sahlberg, kbuild test robot, CIFS, Aurélien Aptel,
samba-technical, Pavel Shilovsky, linux-kernel
Hi Steve,
On Thu, 6 Feb 2020, Steve French wrote:
> ok - changed as suggested. Tested out ok
> From ab3459d8f0ef52c38119ed58c4c29139efc7022c Mon Sep 17 00:00:00 2001
> From: Steve French <stfrench@microsoft.com>
> Date: Thu, 6 Feb 2020 17:31:56 -0600
> Subject: [PATCH 1/2] smb3: print warning once if posix context returned on
> open
>
> SMB3.1.1 POSIX Context processing is not complete yet - so print warning
> (once) if server returns it on open.
>
> Signed-off-by: Steve French <stfrench@microsoft.com>
> Reviewed-by: Aurelien Aptel <aaptel@suse.com>
> ---
> fs/cifs/smb2pdu.c | 22 ++++++++++++++++++++++
> fs/cifs/smb2pdu.h | 8 ++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
> index 47cce0bd1afe..1234f9ccab03 100644
> --- a/fs/cifs/smb2pdu.c
> +++ b/fs/cifs/smb2pdu.c
> @@ -1950,6 +1960,9 @@ smb2_parse_contexts(struct TCP_Server_Info *server,
> unsigned int next;
> unsigned int remaining;
> char *name;
> + const char smb3_create_tag_posix[] = {0x93, 0xAD, 0x25, 0x50, 0x9C,
> + 0xB4, 0x11, 0xE7, 0xB4, 0x23, 0x83,
> + 0xDE, 0x96, 0x8B, 0xCD, 0x7C};
Given this data is used in 2 other places, you may want to make it
global, and use it in build_posix_ctxt() and create_posix_buf(), too.
> On Thu, Feb 6, 2020 at 5:16 PM ronnie sahlberg <ronniesahlberg@gmail.com> wrote:
>>
>> It is probably that m68k lage quite behind in GCC versions and
>> probably that compiler can not handle this construct:
>>> 1983 if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
>> 1984 0x9C, 0xB4, 0x11, 0xE7, 0xB4,
>> 0x23, 0x83,
>>> 1985 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
>> and you would probably need something like this:
>> const char foo[] = {0x93, 0xAD, 0x25, 0x50, 0x9C, 0xB4, 0x11,
>> 0xE7, 0xB4, 0x23, 0x83, 0xDE, 0x96, 0x8B, 0xCD, 0x7C};
>> if (memcmp(name, foo, sizeof(foo)) == 0)
>> ...
This is not related to compiler version (I can trigger it with a small
test program on gcc-7 and gcc-8 on amd64), but due to the use of a
macro in arch/m68k/include/asm/string.h for providing memset():
#define memset(d, c, n) __builtin_memset(d, c, n)
As several other architectures do to the same (even x86, depending on
config options and other parameters), I guess it can be triggered there
as well.
>> On Fri, Feb 7, 2020 at 8:48 AM Steve French <smfrench@gmail.com> wrote:
>>>
>>> It compiled and tested ok. Is this warning a limitation of the kbuild robot?
>>>
>>> On Thu, Feb 6, 2020 at 4:26 PM kbuild test robot <lkp@intel.com> wrote:
>>>>
>>>> tree: git://git.samba.org/sfrench/cifs-2.6.git for-next
>>>> head: 58b322cfd219fd570d4fcc2e2eb8b5d945389d46
>>>> commit: 3d9d8c48232a668ada5f680f70c8b3d366629ab6 [10/11] smb3: print warning once if posix context returned on open
>>>> config: m68k-multi_defconfig (attached as .config)
>>>> compiler: m68k-linux-gcc (GCC) 7.5.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 3d9d8c48232a668ada5f680f70c8b3d366629ab6
>>>> # save the attached .config to linux build tree
>>>> GCC_VERSION=7.5.0 make.cross ARCH=m68k
>>>>
>>>> If you fix the issue, kindly add following tag
>>>> Reported-by: kbuild test robot <lkp@intel.com>
>>>>
>>>> All errors (new ones prefixed by >>):
>>>>
>>>> fs/cifs/smb2pdu.c: In function 'smb2_parse_contexts':
>>>>>> fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3
>>>> 0xDE, 0x96, 0x8B, 0xCD, 0x7C}, 16) == 0)
>>>> ^
>>>>>> fs/cifs/smb2pdu.c:1983:8: error: 'memcmp' undeclared (first use in this function); did you mean 'memchr'?
>>>> if (memcmp(name, (char []) {0x93, 0xAD, 0x25, 0x50,
>>>> ^~~~~~
>>>> memchr
>>>> fs/cifs/smb2pdu.c:1983:8: note: each undeclared identifier is reported only once for each function it appears in
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-02-07 8:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-06 22:26 [cifs:for-next 10/11] fs/cifs/smb2pdu.c:1985:38: error: macro "memcmp" passed 18 arguments, but takes just 3 kbuild test robot
2020-02-06 22:47 ` Steve French
2020-02-06 23:16 ` ronnie sahlberg
2020-02-06 23:33 ` Steve French
2020-02-07 0:34 ` ronnie sahlberg
2020-02-07 8:12 ` Geert Uytterhoeven
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).