0xffffffffffffffb5 it's 2's complement of -EOVERFLOW error
I've finally traced it to:
static inline int may_create(struct user_namespace *mnt_userns,
struct inode *dir, struct dentry *child)
{
audit_inode_child(dir, child, AUDIT_TYPE_CHILD_CREATE);
if (child->d_inode)
return -EEXIST;
if (IS_DEADDIR(dir))
return -ENOENT;
if (!fsuidgid_has_mapping(dir->i_sb, mnt_userns))
return -EOVERFLOW; // <<< looks like error comes from here
Dear friends,
Right now I'm on the way to understand what's happening with this.
# strace touch b "/usr/bin/ touch", ["touch", "b"], 0x7ffd29f848a8 /* 7 vars */) = 0 PROT_WRITE, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0) = 0x7f6bb5d2d000 "/etc/ld. so.preload" , R_OK) = -1 ENOENT (No such file or directory) O_CREAT| O_NOCTTY| O_NONBLOCK, 0666) = -1 EOVERFLOW (Value too large for defined data type)
execve(
brk(NULL) = 0x56007dba6000
arch_prctl(0x3001 /* ARCH_??? */, 0x7fff436afcb0) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|
access(
<...>
openat(AT_FDCWD, "b", O_WRONLY|
From ftrace/perf trace: openat2_ _return: (__x64_ sys_openat+ 0x55/0x90 <- do_sys_openat2) arg1=0xffffffff ffffffb5 */
877.582556 | 0) | /* do_sys_
0xffffffffffffffb5 it's 2's complement of -EOVERFLOW error
I've finally traced it to: inode_child( dir, child, AUDIT_TYPE_ CHILD_CREATE) ; has_mapping( dir->i_ sb, mnt_userns))
static inline int may_create(struct user_namespace *mnt_userns,
struct inode *dir, struct dentry *child)
{
audit_
if (child->d_inode)
return -EEXIST;
if (IS_DEADDIR(dir))
return -ENOENT;
if (!fsuidgid_
return -EOVERFLOW; // <<< looks like error comes from here
My suspicion is that the problem is caused by these two changes, which are potentially incompatible with shiftfs: has_mapping( ) /git.launchpad. net/~ubuntu- kernel/ ubuntu/ +source/ linux/+ git/jammy/ commit/ ?h=Ubuntu- 5.15.0- 48.54&id= 941bdeb5ab22587 58fce5f4d06296d a98bfa7e82)
+ - fs: tweak fsuidgid_
+ - fs: support mapped mounts of mapped filesystems
(changelog from https:/
Will continue investigation.