On 2011-05-15, at 9:14 AM, Andi Kleen <andi@xxxxxxxxxxxxxx> wrote: > Alex Davis <alex14641@xxxxxxxxx> writes: >> In fs/udf/inode.c, line 1455, linux 2.6.35, there is the following code: >> >> udfperms = ((inode->i_mode & S_IRWXO)) | >> ((inode->i_mode & S_IRWXG) << 2) | >> ((inode->i_mode & S_IRWXU) << 4); >> >> Shouldn't we be shifting by 3 bits? i.e: >> udfperms = ((inode->i_mode & S_IRWXO)) | >> ((inode->i_mode & S_IRWXG) << 3) | >> ((inode->i_mode & S_IRWXU) << 6); >> >> The S_I.. constants are all defined in include/linux/stat.h as 3-bit values. >> >> I will send a patch if needed. > > I would suggest you test it first. Put in a UDF disk that triggers > this case (verify with a printk). Check in ls -l if the > permissions are correct or wrong. Typically I would agree. In this case ir looks like the existing code doesn't make sense, because it will be overlapping the R and X bits from the adjacent U, G, and O masks. Cheers, Andreas-- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html