520856 unhandled instruction bytes: 0x2E 0xFF 0x14 0x85
520861 Update FAQ for C++ standard library
521027 Advertise LZCNT on amd64 via CPUID
+521054 Unhandled amd64-linux syscall: 467 (open_tree_attr)
521259 Improve check_makefile_consistency
521332 vex x86->IR: unhandled instruction bytes: 66 0F 38 37 (PCMPGTQ)
DECL_TEMPLATE(linux, sys_lsm_set_self_attr);
DECL_TEMPLATE(linux, sys_lsm_list_modules);
+// Since Linux 6.14
+DECL_TEMPLATE(linux, sys_open_tree_attr);
+
// Since Linux 6.17-rc1
DECL_TEMPLATE(linux, sys_file_getattr);
DECL_TEMPLATE(linux, sys_file_setattr);
LINX_(__NR_lsm_set_self_attr, sys_lsm_set_self_attr), // 460
LINXY(__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_(__NR_mseal, sys_mseal), // 462
+ LINXY(__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY(__NR_file_getattr, sys_file_getattr), // 468
LINX_(__NR_file_setattr, sys_file_setattr), // 469
};
LINX_(__NR_lsm_set_self_attr, sys_lsm_set_self_attr), // 460
LINXY(__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_(__NR_mseal, sys_mseal), // 462
+ LINXY(__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY(__NR_file_getattr, sys_file_getattr), // 468
LINX_(__NR_file_setattr, sys_file_setattr), // 469
};
LINX_(__NR_lsm_set_self_attr, sys_lsm_set_self_attr), // 460
LINXY(__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_(__NR_mseal, sys_mseal), // 462
+ LINXY(__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY(__NR_file_getattr, sys_file_getattr), // 468
LINX_(__NR_file_setattr, sys_file_setattr), // 469
};
}
}
+/* int open_tree_attr (int dfd, const char *filename, unsigned int flags,
+ struct mount_attr __user * uattr, size_t usize) */
+PRE(sys_open_tree_attr)
+{
+ PRINT("sys_open_tree_attr ( %ld, %#" FMT_REGWORD "x(%s), %ld, %#" FMT_REGWORD "x, %" FMT_REGWORD "u ",
+ SARG1, ARG2, (HChar*)(Addr)ARG2, SARG3, ARG4, ARG5);
+ PRE_REG_READ5(long, "open_tree_attr",
+ int, dfd, const char *, filename, int, flags,
+ struct vki_mount_attr *, uattr, vki_size_t, usize);
+ PRE_MEM_RASCIIZ( "open_tree_attr(filename)", ARG2);
+ /* For absolute filenames, dfd is ignored. If dfd is AT_FDCWD,
+ filename is relative to cwd. When comparing dfd against AT_FDCWD,
+ be sure only to compare the bottom 32 bits. */
+ if (ML_(safe_to_deref)( (void*)(Addr)ARG2, 1 )
+ && *(Char *)(Addr)ARG2 != '/'
+ && ((Int)ARG1) != ((Int)VKI_AT_FDCWD)
+ && !ML_(fd_allowed)(ARG1, "open_tree_attr", tid, False))
+ SET_STATUS_Failure( VKI_EBADF );
+ PRE_MEM_READ("open_tree_attr(uattr)", ARG4, ARG5);
+}
+
+POST(sys_open_tree_attr)
+{
+ POST_newFd_RES;
+ if (!ML_(fd_allowed)(RES, "open_tree_attr", tid, True)) {
+ VG_(close)(RES);
+ SET_STATUS_Failure( VKI_EMFILE );
+ } else {
+ if (VG_(clo_track_fds))
+ ML_(record_fd_open_with_given_name)(tid, RES, (HChar*)(Addr)ARG2);
+ }
+}
+
/* int move_mount (int from_dfd, const char *from_pathname,
int to_dfd, const char *to_pathname,
unsigned int flags) */
LINX_(__NR_lsm_set_self_attr, sys_lsm_set_self_attr), // 460
LINXY(__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_(__NR_mseal, sys_mseal), // 462
+ LINXY(__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY(__NR_file_getattr, sys_file_getattr), // 468
LINX_(__NR_file_setattr, sys_file_setattr), // 469
};
LINX_ (__NR_mseal, sys_mseal),
LINX_ (__NR_futex_waitv, sys_futex_waitv),
LINXY (__NR_quotactl_fd, sys_quotactl_fd),
+ LINXY (__NR_open_tree_attr, sys_open_tree_attr),
LINXY (__NR_file_getattr, sys_file_getattr),
LINX_ (__NR_file_setattr, sys_file_setattr),
};
LINXY (__NR_lsm_list_modules, sys_lsm_list_modules),
LINX_ (__NR_mseal, sys_mseal),
LINX_ (__NR_futex_waitv, sys_futex_waitv),
+ LINXY (__NR_open_tree_attr, sys_open_tree_attr),
LINXY (__NR_file_getattr, sys_file_getattr),
LINX_ (__NR_file_setattr, sys_file_setattr),
};
LINX_ (__NR_lsm_set_self_attr,sys_lsm_set_self_attr), // 460
LINXY (__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_ (__NR_mseal, sys_mseal), // 462
+ LINXY (__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY (__NR_file_getattr, sys_file_getattr), // 468
LINX_ (__NR_file_setattr, sys_file_setattr), // 469
};
LINX_ (__NR_lsm_set_self_attr,sys_lsm_set_self_attr), // 460
LINXY (__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_ (__NR_mseal, sys_mseal), // 462
+ LINXY (__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY (__NR_file_getattr, sys_file_getattr), // 468
LINX_ (__NR_file_setattr, sys_file_setattr), // 469
};
LINX_(__NR_lsm_set_self_attr, sys_lsm_set_self_attr), /* 460 */
LINXY(__NR_lsm_list_modules, sys_lsm_list_modules), /* 461 */
LINX_(__NR_mseal, sys_mseal), /* 462 */
+ LINXY(__NR_open_tree_attr, sys_open_tree_attr), /* 467 */
LINXY(__NR_file_getattr, sys_file_getattr), /* 468 */
LINX_(__NR_file_setattr, sys_file_setattr), /* 469 */
};
LINX_ (__NR_lsm_set_self_attr, sys_lsm_set_self_attr), // 460
LINXY (__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_ (__NR_mseal, sys_mseal), // 462
+ LINXY (__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY (__NR_file_getattr, sys_file_getattr), // 468
LINX_ (__NR_file_setattr, sys_file_setattr), // 469
};
LINX_(__NR_lsm_set_self_attr, sys_lsm_set_self_attr), // 460
LINXY(__NR_lsm_list_modules, sys_lsm_list_modules), // 461
LINX_(__NR_mseal, sys_mseal), // 462
+ LINXY(__NR_open_tree_attr, sys_open_tree_attr), // 467
LINXY(__NR_file_getattr, sys_file_getattr), // 468
LINX_(__NR_file_setattr, sys_file_setattr), // 469
};
char str[]; /* Variable size part containing strings */
};
+struct vki_mount_attr {
+ __vki_u64 attr_set;
+ __vki_u64 attr_clr;
+ __vki_u64 propagation;
+ __vki_u64 userns_fd;
+};
+
//----------------------------------------------------------------------
// From uapi/linux/fs.h
//----------------------------------------------------------------------
#define __NR_lsm_set_self_attr 460
#define __NR_lsm_list_modules 461
#define __NR_mseal 462
+#define __NR_open_tree_attr 467
#define __NR_file_getattr 468
#define __NR_file_setattr 469