On Fri, 17 Oct 2008, Phillip Lougher wrote:
> --- /dev/null
> +++ b/fs/squashfs/inode.c

> +     case SQUASHFS_BLKDEV_TYPE:
> +     case SQUASHFS_CHRDEV_TYPE: {
> +             struct squashfs_dev_inode *inodep = &id.dev;
> +             unsigned int rdev;
> +
> +             if (!squashfs_read_metadata(s, inodep, block, offset,
> +                             sizeof(*inodep), &next_block, &next_offset))
> +                     goto failed_read;
> +
> +             i->i_nlink = le32_to_cpu(inodep->nlink);
> +             i->i_mode |= (type == SQUASHFS_CHRDEV_TYPE) ? S_IFCHR : S_IFBLK;
> +             rdev = le32_to_cpu(inodep->rdev);
> +             init_special_inode(i, le16_to_cpu(i->i_mode),
                                      ^^^^^^^^^^^
> +                                     new_decode_dev(rdev));
> +
> +             TRACE("Device inode %x:%x, rdev %x\n",
> +                             SQUASHFS_INODE_BLK(inode), offset, rdev);
> +             break;
> +     }
> +     case SQUASHFS_FIFO_TYPE:
> +     case SQUASHFS_SOCKET_TYPE: {
> +             struct squashfs_ipc_inode *inodep = &id.ipc;
> +
> +             if (!squashfs_read_metadata(s, inodep, block, offset,
> +                             sizeof(*inodep), &next_block, &next_offset))
> +                     goto failed_read;
> +
> +             i->i_nlink = le32_to_cpu(inodep->nlink);
> +             i->i_mode |= (type == SQUASHFS_FIFO_TYPE) ? S_IFIFO : S_IFSOCK;
> +             init_special_inode(i, le16_to_cpu(i->i_mode), 0);
                                      ^^^^^^^^^^^
> +             break;

Sparse with endian checking (make C=2 CHECKFLAGS="-D__CHECK_ENDIAN__") complains
about these:

| fs/squashfs/inode.c:306:25: warning: cast to restricted __le16
| fs/squashfs/inode.c:324:25: warning: cast to restricted __le16

and it seems to be right, as inode.i_mode is not __le16. I think the 
le16_to_cpu()
should be removed.

BTW, there are also a few sparse warnings about different signednesses, so you
probably want to run sparse yourself, too.

With kind regards,

Geert Uytterhoeven
Software Architect

Sony Techsoft Centre Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium

Phone:    +32 (0)2 700 8453
Fax:      +32 (0)2 700 8622
E-mail:   [EMAIL PROTECTED]
Internet: http://www.sony-europe.com/

A division of Sony Europe (Belgium) N.V.
VAT BE 0413.825.160 · RPR Brussels
Fortis · BIC GEBABEBB · IBAN BE41293037680010

Reply via email to