2023-07-20 01:13:21

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the cifs tree

Hi all,

After merging the cifs tree, today's linux-next build (x86_64
allmodconfig) failed like this:

fs/smb/client/connect.c: In function 'cifs_get_smb_ses':
fs/smb/client/connect.c:2293:49: error: passing argument 1 of 'load_nls' discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
2293 | ses->local_nls = load_nls(ctx->local_nls->charset);
| ~~~~~~~~~~~~~~^~~~~~~~~
In file included from fs/smb/client/cifsproto.h:10,
from fs/smb/client/connect.c:37:
include/linux/nls.h:50:35: note: expected 'char *' but argument is of type 'const char *'
50 | extern struct nls_table *load_nls(char *);
| ^~~~~~

Caused by commit

46055407cd4a ("cifs: fix charset issue in reconnection")

I have used the cifs tree from next-20230719 for today.

It looks as though the parameter to load_nls could be made const safely
as it is just passed to try_then_request_module() passes it to
__request_module() which just passes it to vsnprintf() to construct the
module name. There does not appear to be any maintainer for fs/nls ...
--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2023-07-20 01:29:23

by Steve French

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the cifs tree

Winston had an updated version of the patch - just replaced it with
his updated one which does a cast to (char *)

ses->local_nls = load_nls((char *)ctx->local_nls->charset);

But as he noted in an earlier email thread:
> Perhaps I should make a change to load_nls() to take a const char *
> instead of char *? If this make sense, I'll do it soon.

which is probably cleaner

On Wed, Jul 19, 2023 at 7:35 PM Stephen Rothwell <[email protected]> wrote:
>
> Hi all,
>
> After merging the cifs tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
>
> fs/smb/client/connect.c: In function 'cifs_get_smb_ses':
> fs/smb/client/connect.c:2293:49: error: passing argument 1 of 'load_nls' discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
> 2293 | ses->local_nls = load_nls(ctx->local_nls->charset);
> | ~~~~~~~~~~~~~~^~~~~~~~~
> In file included from fs/smb/client/cifsproto.h:10,
> from fs/smb/client/connect.c:37:
> include/linux/nls.h:50:35: note: expected 'char *' but argument is of type 'const char *'
> 50 | extern struct nls_table *load_nls(char *);
> | ^~~~~~
>
> Caused by commit
>
> 46055407cd4a ("cifs: fix charset issue in reconnection")
>
> I have used the cifs tree from next-20230719 for today.
>
> It looks as though the parameter to load_nls could be made const safely
> as it is just passed to try_then_request_module() passes it to
> __request_module() which just passes it to vsnprintf() to construct the
> module name. There does not appear to be any maintainer for fs/nls ...
> --
> Cheers,
> Stephen Rothwell



--
Thanks,

Steve

2023-07-20 01:30:39

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the cifs tree

Hi all,

On Wed, 19 Jul 2023 19:47:42 -0500 Steve French <[email protected]> wrote:
>
> Winston had an updated version of the patch - just replaced it with
> his updated one which does a cast to (char *)
>
> ses->local_nls = load_nls((char *)ctx->local_nls->charset);
>
> But as he noted in an earlier email thread:
> > Perhaps I should make a change to load_nls() to take a const char *
> > instead of char *? If this make sense, I'll do it soon.
>
> which is probably cleaner

s/probably/definitely/ ;-)

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2023-07-20 01:58:06

by Winston Wen

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the cifs tree

On Thu, 20 Jul 2023 11:00:21 +1000
Stephen Rothwell <[email protected]> wrote:

> Hi all,
>
> On Wed, 19 Jul 2023 19:47:42 -0500 Steve French <[email protected]>
> wrote:
> >
> > Winston had an updated version of the patch - just replaced it with
> > his updated one which does a cast to (char *)
> >
> > ses->local_nls = load_nls((char
> > *)ctx->local_nls->charset);
> >
> > But as he noted in an earlier email thread:
> > > Perhaps I should make a change to load_nls() to take a const char
> > > * instead of char *? If this make sense, I'll do it soon.
> >
> > which is probably cleaner
>
> s/probably/definitely/ ;-)
>

haha yes!

I'll make a small patch for this in the next cycle.

--
Thanks,
Winston