Add vfs_getattr compatibility for kernels < 4.14
Co-authored-by: backslashxx <118538522+backslashxx@users.noreply.github.com> Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
This commit is contained in:
@@ -124,7 +124,6 @@ ifeq ($(shell grep "ssize_t kernel_write" $(srctree)/fs/read_write.c | grep -q "
|
|||||||
ccflags-y += -DKSU_OPTIONAL_KERNEL_WRITE
|
ccflags-y += -DKSU_OPTIONAL_KERNEL_WRITE
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell grep -q "inode_security_struct\s\+\*selinux_inode" $(srctree)/security/selinux/include/objsec.h; echo $$?),0)
|
ifeq ($(shell grep -q "inode_security_struct\s\+\*selinux_inode" $(srctree)/security/selinux/include/objsec.h; echo $$?),0)
|
||||||
$(info -- KernelSU: kernel has selinux_inode.)
|
|
||||||
ccflags-y += -DKSU_OPTIONAL_SELINUX_INODE
|
ccflags-y += -DKSU_OPTIONAL_SELINUX_INODE
|
||||||
endif
|
endif
|
||||||
ifeq ($(shell grep -q "int\s\+path_umount" $(srctree)/fs/namespace.c; echo $$?),0)
|
ifeq ($(shell grep -q "int\s\+path_umount" $(srctree)/fs/namespace.c; echo $$?),0)
|
||||||
@@ -144,6 +143,12 @@ ifeq ($(shell grep -q "SEC_SELINUX_PORTING_COMMON" $(srctree)/security/selinux/a
|
|||||||
ccflags-y += -DSAMSUNG_SELINUX_PORTING
|
ccflags-y += -DSAMSUNG_SELINUX_PORTING
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Check new vfs_getattr()
|
||||||
|
ifeq ($(shell grep -A1 "^int vfs_getattr" $(srctree)/fs/stat.c | grep -q "query_flags" ; echo $$?),0)
|
||||||
|
$(info -- KernelSU/compat: new vfs_getattr() found)
|
||||||
|
ccflags-y += -DKSU_HAS_NEW_VFS_GETATTR
|
||||||
|
endif
|
||||||
|
|
||||||
# Custom Signs
|
# Custom Signs
|
||||||
ifdef KSU_EXPECTED_SIZE
|
ifdef KSU_EXPECTED_SIZE
|
||||||
ccflags-y += -DEXPECTED_SIZE=$(KSU_EXPECTED_SIZE)
|
ccflags-y += -DEXPECTED_SIZE=$(KSU_EXPECTED_SIZE)
|
||||||
|
|||||||
@@ -273,8 +273,23 @@ FILLDIR_RETURN_TYPE user_data_actor(struct dir_context *ctx, const char *name,
|
|||||||
return FILLDIR_ACTOR_CONTINUE;
|
return FILLDIR_ACTOR_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
4.11, also backported on lineage common kernel 4.9 !!
|
||||||
|
int vfs_getattr(const struct path *path, struct kstat *stat,
|
||||||
|
u32 request_mask, unsigned int query_flags)
|
||||||
|
|
||||||
|
4.10
|
||||||
|
int vfs_getattr(struct path *path, struct kstat *stat)
|
||||||
|
|
||||||
|
basically no mask and flags for =< 4.10
|
||||||
|
|
||||||
|
*/
|
||||||
struct kstat stat;
|
struct kstat stat;
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0) || defined(KSU_HAS_NEW_VFS_GETATTR)
|
||||||
err = vfs_getattr(&path, &stat, STATX_UID, AT_STATX_SYNC_AS_STAT);
|
err = vfs_getattr(&path, &stat, STATX_UID, AT_STATX_SYNC_AS_STAT);
|
||||||
|
#else
|
||||||
|
err = vfs_getattr(&path, &stat);
|
||||||
|
#endif
|
||||||
path_put(&path);
|
path_put(&path);
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user