On 07/11/2019 09:12, Colin Ian King wrote: > On 07/11/2019 08:45, Colin Ian King wrote: >> On 07/11/2019 07:08, Amir Goldstein wrote: >>> On Thu, Nov 7, 2019 at 1:43 AM Colin King <colin.king@xxxxxxxxxxxxx> wrote: >>>> >>>> From: Colin Ian King <colin.king@xxxxxxxxxxxxx> >>>> >>>> Some file systems such as squashfs do not set the UUID in the >>>> superblock resulting in a zero'd UUID. In cases were two or more >>>> of these file systems are overlayed on the lower layer we can hit >>>> overlay corruption issues because identical zero'd overlayfs UUIDs >>>> are impossible to differentiate between. This can be fixed by >>>> creating an overlayfs UUID based on the file system from the >>>> superblock s_magic and s_dev fields. (This currently seems like >>>> enough information to be able create a UUID, but the could be >>>> scope to use other super block fields such as the pointer s_fs_info >>>> but may need some obfuscation). >>>> >>> >>> The fix is incorrent. uuid stored in xattr needs to have persistent properties. >>> In the use case that you describe, the origin file handle should simply be >>> ignored. >>> >>> Please test attached patch. >> >> Thanks for the patch. Tested, and the error still occurs: >> >> [ 163.959633] overlayfs: invalid origin (etc/.pwd.lock, ftype=8000, >> origin ftype=4000). > > Added debug, seems like nouuid is not being set to true, nouuid is false > on the layers 0 and 1. So nouuid is not being set in ovl_lower_uuid_ok() because the code is returning early because of the following statement: if (!ofs->config.nfs_export && !(ofs->config.index && ofs->upper_mnt)) return true; ..and not getting to the following for-loop. > >> >> Colin >> >>> >>> Thanks, >>> Amir. >>> >> >