mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
um/hostfs: define HOSTFS_ATTR_* via asm-offsets
The HOSTFS_ATTR_* values were meant to be standalone for communication between hostfs's kernel and user code parts. However, it's easy to forget that HOSTFS_ATTR_* should be used even on the kernel side, and that wasn't consistently done. As a result, the values need to match ATTR_* values, which is not useful to maintain by hand. Instead, generate them via asm-offsets like other constants that UML needs in user-side code that aren't otherwise available in any header files that can be included there. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Hongbo Li <lihongbo22@huawei.com> Link: https://patch.msgid.link/20251007071452.367989-3-johannes@sipsolutions.net Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -18,3 +18,13 @@ DEFINE(UM_NSEC_PER_USEC, NSEC_PER_USEC);
|
||||
DEFINE(UM_KERN_GDT_ENTRY_TLS_ENTRIES, GDT_ENTRY_TLS_ENTRIES);
|
||||
|
||||
DEFINE(UM_SECCOMP_ARCH_NATIVE, SECCOMP_ARCH_NATIVE);
|
||||
|
||||
DEFINE(HOSTFS_ATTR_MODE, ATTR_MODE);
|
||||
DEFINE(HOSTFS_ATTR_UID, ATTR_UID);
|
||||
DEFINE(HOSTFS_ATTR_GID, ATTR_GID);
|
||||
DEFINE(HOSTFS_ATTR_SIZE, ATTR_SIZE);
|
||||
DEFINE(HOSTFS_ATTR_ATIME, ATTR_ATIME);
|
||||
DEFINE(HOSTFS_ATTR_MTIME, ATTR_MTIME);
|
||||
DEFINE(HOSTFS_ATTR_CTIME, ATTR_CTIME);
|
||||
DEFINE(HOSTFS_ATTR_ATIME_SET, ATTR_ATIME_SET);
|
||||
DEFINE(HOSTFS_ATTR_MTIME_SET, ATTR_MTIME_SET);
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <linux/crypto.h>
|
||||
#include <linux/kbuild.h>
|
||||
#include <linux/audit.h>
|
||||
#include <linux/fs.h>
|
||||
#include <asm/mman.h>
|
||||
#include <asm/seccomp.h>
|
||||
|
||||
|
||||
@@ -3,40 +3,8 @@
|
||||
#define __UM_FS_HOSTFS
|
||||
|
||||
#include <os.h>
|
||||
#include <generated/asm-offsets.h>
|
||||
|
||||
/*
|
||||
* These are exactly the same definitions as in fs.h, but the names are
|
||||
* changed so that this file can be included in both kernel and user files.
|
||||
*/
|
||||
|
||||
#define HOSTFS_ATTR_MODE 1
|
||||
#define HOSTFS_ATTR_UID 2
|
||||
#define HOSTFS_ATTR_GID 4
|
||||
#define HOSTFS_ATTR_SIZE 8
|
||||
#define HOSTFS_ATTR_ATIME 16
|
||||
#define HOSTFS_ATTR_MTIME 32
|
||||
#define HOSTFS_ATTR_CTIME 64
|
||||
#define HOSTFS_ATTR_ATIME_SET 128
|
||||
#define HOSTFS_ATTR_MTIME_SET 256
|
||||
|
||||
/* This one is unused by hostfs. */
|
||||
#define HOSTFS_ATTR_FORCE 512 /* Not a change, but a change it */
|
||||
#define HOSTFS_ATTR_ATTR_FLAG 1024
|
||||
|
||||
/*
|
||||
* If you are very careful, you'll notice that these two are missing:
|
||||
*
|
||||
* #define ATTR_KILL_SUID 2048
|
||||
* #define ATTR_KILL_SGID 4096
|
||||
*
|
||||
* and this is because they were added in 2.5 development.
|
||||
* Actually, they are not needed by most ->setattr() methods - they are set by
|
||||
* callers of notify_change() to notify that the setuid/setgid bits must be
|
||||
* dropped.
|
||||
* notify_change() will delete those flags, make sure attr->ia_valid & ATTR_MODE
|
||||
* is on, and remove the appropriate bits from attr->ia_mode (attr is a
|
||||
* "struct iattr *"). -BlaisorBlade
|
||||
*/
|
||||
struct hostfs_timespec {
|
||||
long long tv_sec;
|
||||
long long tv_nsec;
|
||||
|
||||
Reference in New Issue
Block a user