kernel: handle optional backport for selinux_inode
* For supporting kernel 4.19 with 5.10 bpf backports. Co-authored-by: rsuntk <rsuntk@yukiprjkt.my.id>
This commit is contained in:
@@ -4,30 +4,9 @@
|
||||
#include <linux/fs.h>
|
||||
#include <linux/version.h>
|
||||
#include <linux/cred.h>
|
||||
#include <linux/list.h>
|
||||
#include "ss/policydb.h"
|
||||
#include "linux/key.h"
|
||||
|
||||
// for kernel without get_cred_rcu
|
||||
#ifndef KSU_COMPAT_HAS_GET_CRED_RCU
|
||||
static inline const struct cred *get_cred_rcu(const struct cred *cred)
|
||||
{
|
||||
struct cred *nonconst_cred = (struct cred *) cred;
|
||||
if (!cred)
|
||||
return NULL;
|
||||
#ifdef KSU_COMPAT_ATOMIC_LONG
|
||||
if (!atomic_long_inc_not_zero(&nonconst_cred->usage))
|
||||
#else
|
||||
if (!atomic_inc_not_zero(&nonconst_cred->usage))
|
||||
#endif
|
||||
return NULL;
|
||||
validate_creds(cred);
|
||||
#ifdef KSU_COMPAT_HAS_NONCONST_CRED
|
||||
nonconst_cred->non_rcu = 0;
|
||||
#endif
|
||||
return cred;
|
||||
}
|
||||
#endif
|
||||
#include <linux/list.h>
|
||||
|
||||
/**
|
||||
* list_count_nodes - count the number of nodes in a list
|
||||
@@ -82,8 +61,13 @@ static inline __maybe_unused size_t list_count_nodes(const struct list_head *hea
|
||||
extern long ksu_strncpy_from_user_nofault(char *dst,
|
||||
const void __user *unsafe_addr,
|
||||
long count);
|
||||
extern long ksu_strncpy_from_user_retry(char *dst,
|
||||
const void __user *unsafe_addr,
|
||||
long count);
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) || defined(CONFIG_IS_HW_HISI) || defined(CONFIG_KSU_ALLOWLIST_WORKAROUND)
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) || \
|
||||
defined(CONFIG_IS_HW_HISI) || \
|
||||
defined(CONFIG_KSU_ALLOWLIST_WORKAROUND)
|
||||
extern struct key *init_session_keyring;
|
||||
#endif
|
||||
|
||||
@@ -96,9 +80,9 @@ extern ssize_t ksu_kernel_write_compat(struct file *p, const void *buf,
|
||||
size_t count, loff_t *pos);
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
|
||||
#define ksu_access_ok(addr, size) (access_ok(addr, size))
|
||||
#define ksu_access_ok(addr, size) access_ok(addr, size)
|
||||
#else
|
||||
#define ksu_access_ok(addr, size) (access_ok(VERIFY_READ, addr, size))
|
||||
#define ksu_access_ok(addr, size) access_ok(VERIFY_READ, addr, size)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user