Last night I made a similar patch to the cifs bk tree and will be
testing it on ppc as soon as I can track down a free one today (it
tested fine last night on intel). Patch is at:
http://cifs.bkbits.net:8080/linux-2.5cifs/gnupatch@4259f2138nVCJQt3SmaZowdXd8KB7A
Thanks.
> On Mon, Apr 11, 2005 at 01:25:32AM -0700, Andrew Morton wrote:
> > Changes since 2.6.12-rc2-mm2:
> >
> >
> > bk-cifs.patch
>
>
> The following patch correct an error in bk-cifs:
>
> fs/cifs/misc.c: In function ?cifs_convertUCSpath?:
> fs/cifs/misc.c:546: error: case label does not reduce to an integer
> constant
> fs/cifs/misc.c:549: error: case label does not reduce to an integer
> constant
> fs/cifs/misc.c:552: error: case label does not reduce to an integer
> constant
> fs/cifs/misc.c:561: error: case label does not reduce to an integer
> constant
> fs/cifs/misc.c:564: error: case label does not reduce to an integer
> constant
> fs/cifs/misc.c:567: error: case label does not reduce to an integer
> constant
>
> The utilisations of UNI_* constants show that it is should in cpu
> format:
>
> for example line 542, src_char is converted in cpu_format:
> src_char = le16_to_cpu(source[i]);
> switch (src_char) {
> ...
> case UNI_COLON:
> ...
>
> or line 610, it is unlikely that you want to have
> cpu_to_le16(cpu_to_le16(x)):
> target[j] = cpu_to_le16(UNI_COLON);
>
> the following patch fixes it.
>
> Signed-Off-By: Benoit Boissinot <[email protected]>
>
>
> --- ./fs/cifs/misc.c.orig 2005-04-11 19:18:11.000000000 +0200
> +++ ./fs/cifs/misc.c 2005-04-11 19:18:30.000000000 +0200
> @@ -519,13 +519,13 @@ dump_smb(struct smb_hdr *smb_buf, int sm
> /* Windows maps these to the user defined 16 bit Unicode range since
> they are
> reserved symbols (along with \ and /), otherwise illegal to store
> in filenames in NTFS */
> -#define UNI_ASTERIK cpu_to_le16('*' + 0xF000)
> -#define UNI_QUESTION cpu_to_le16('?' + 0xF000)
> -#define UNI_COLON cpu_to_le16(':' + 0xF000)
> -#define UNI_GRTRTHAN cpu_to_le16('>' + 0xF000)
> -#define UNI_LESSTHAN cpu_to_le16('<' + 0xF000)
> -#define UNI_PIPE cpu_to_le16('|' + 0xF000)
> -#define UNI_SLASH cpu_to_le16('\\' + 0xF000)
> +#define UNI_ASTERIK ('*' + 0xF000)
> +#define UNI_QUESTION ('?' + 0xF000)
> +#define UNI_COLON (':' + 0xF000)
> +#define UNI_GRTRTHAN ('>' + 0xF000)
> +#define UNI_LESSTHAN ('<' + 0xF000)
> +#define UNI_PIPE ('|' + 0xF000)
> +#define UNI_SLASH ('\\' + 0xF000)
>
> /* Convert 16 bit Unicode pathname from wire format to string in
> current code
> page. Conversion may involve remapping up the seven characters
> that are