Messages in this thread |  | | | From | Andreas Dilger <> | | Subject | Re: Possible coding issue in udf?? | | Date | Sun, 15 May 2011 10:32:11 -0600 |
| |
On 2011-05-15, at 9:14 AM, Andi Kleen <andi@firstfloor.org> wrote: > Alex Davis <alex14641@yahoo.com> 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
|  |