|
Kmods SIG |
d83023 |
From 564c97bdfa39c7d1f331841fb24da6e714693037 Mon Sep 17 00:00:00 2001
|
|
Kmods SIG |
d83023 |
From: Kari Argillander <kari.argillander@gmail.com>
|
|
Kmods SIG |
d83023 |
Date: Tue, 7 Sep 2021 18:35:51 +0300
|
|
Kmods SIG |
d83023 |
Subject: [Backport 564c97bdfa39] src: Convert mount options to pointer in
|
|
Kmods SIG |
d83023 |
sbi
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
Use pointer to mount options. We want to do this because we will use new
|
|
Kmods SIG |
d83023 |
mount api which will benefit that we have spi and mount options in
|
|
Kmods SIG |
d83023 |
different allocations. When we remount we do not have to make whole new
|
|
Kmods SIG |
d83023 |
spi it is enough that we will allocate just mount options.
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
Please note that we can do example remount lot cleaner but things will
|
|
Kmods SIG |
d83023 |
change in next patch so this should be just functional.
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
Signed-off-by: Kari Argillander <kari.argillander@gmail.com>
|
|
Kmods SIG |
d83023 |
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
|
|
Kmods SIG |
d83023 |
---
|
|
Kmods SIG |
d83023 |
src/attrib.c | 2 +-
|
|
Kmods SIG |
d83023 |
src/dir.c | 8 ++++----
|
|
Kmods SIG |
d83023 |
src/file.c | 4 ++--
|
|
Kmods SIG |
d83023 |
src/inode.c | 12 ++++++------
|
|
Kmods SIG |
d83023 |
src/ntfs_fs.h | 2 +-
|
|
Kmods SIG |
d83023 |
src/super.c | 31 +++++++++++++++++++------------
|
|
Kmods SIG |
d83023 |
src/xattr.c | 2 +-
|
|
Kmods SIG |
d83023 |
7 files changed, 34 insertions(+), 27 deletions(-)
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
diff --git a/src/attrib.c b/src/attrib.c
|
|
Kmods SIG |
d83023 |
index 34c4cbf7e29bc49bdb3fa060fd2c235c3fb68536..b1055b284c60323168be99ce69b18e7dbd7bb969 100644
|
|
Kmods SIG |
d83023 |
--- a/src/attrib.c
|
|
Kmods SIG |
d83023 |
+++ b/src/attrib.c
|
|
Kmods SIG |
d83023 |
@@ -529,7 +529,7 @@ int attr_set_size(struct ntfs_inode *ni, enum ATTR_TYPE type,
|
|
Kmods SIG |
d83023 |
} else if (pre_alloc == -1) {
|
|
Kmods SIG |
d83023 |
pre_alloc = 0;
|
|
Kmods SIG |
d83023 |
if (type == ATTR_DATA && !name_len &&
|
|
Kmods SIG |
d83023 |
- sbi->options.prealloc) {
|
|
Kmods SIG |
d83023 |
+ sbi->options->prealloc) {
|
|
Kmods SIG |
d83023 |
CLST new_alen2 = bytes_to_cluster(
|
|
Kmods SIG |
d83023 |
sbi, get_pre_allocated(new_size));
|
|
Kmods SIG |
d83023 |
pre_alloc = new_alen2 - new_alen;
|
|
Kmods SIG |
d83023 |
diff --git a/src/dir.c b/src/dir.c
|
|
Kmods SIG |
d83023 |
index 93f6d485564e0103e56ad417f184f1ace0926eea..40440df021eff2a95a87ff7a2af38345a7c40793 100644
|
|
Kmods SIG |
d83023 |
--- a/src/dir.c
|
|
Kmods SIG |
d83023 |
+++ b/src/dir.c
|
|
Kmods SIG |
d83023 |
@@ -24,7 +24,7 @@ int ntfs_utf16_to_nls(struct ntfs_sb_info *sbi, const struct le_str *uni,
|
|
Kmods SIG |
d83023 |
int ret, uni_len, warn;
|
|
Kmods SIG |
d83023 |
const __le16 *ip;
|
|
Kmods SIG |
d83023 |
u8 *op;
|
|
Kmods SIG |
d83023 |
- struct nls_table *nls = sbi->options.nls;
|
|
Kmods SIG |
d83023 |
+ struct nls_table *nls = sbi->options->nls;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
static_assert(sizeof(wchar_t) == sizeof(__le16));
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
@@ -186,7 +186,7 @@ int ntfs_nls_to_utf16(struct ntfs_sb_info *sbi, const u8 *name, u32 name_len,
|
|
Kmods SIG |
d83023 |
{
|
|
Kmods SIG |
d83023 |
int ret, slen;
|
|
Kmods SIG |
d83023 |
const u8 *end;
|
|
Kmods SIG |
d83023 |
- struct nls_table *nls = sbi->options.nls;
|
|
Kmods SIG |
d83023 |
+ struct nls_table *nls = sbi->options->nls;
|
|
Kmods SIG |
d83023 |
u16 *uname = uni->name;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
static_assert(sizeof(wchar_t) == sizeof(u16));
|
|
Kmods SIG |
d83023 |
@@ -301,10 +301,10 @@ static inline int ntfs_filldir(struct ntfs_sb_info *sbi, struct ntfs_inode *ni,
|
|
Kmods SIG |
d83023 |
return 0;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
/* Skip meta files. Unless option to show metafiles is set. */
|
|
Kmods SIG |
d83023 |
- if (!sbi->options.showmeta && ntfs_is_meta_file(sbi, ino))
|
|
Kmods SIG |
d83023 |
+ if (!sbi->options->showmeta && ntfs_is_meta_file(sbi, ino))
|
|
Kmods SIG |
d83023 |
return 0;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- if (sbi->options.nohidden && (fname->dup.fa & FILE_ATTRIBUTE_HIDDEN))
|
|
Kmods SIG |
d83023 |
+ if (sbi->options->nohidden && (fname->dup.fa & FILE_ATTRIBUTE_HIDDEN))
|
|
Kmods SIG |
d83023 |
return 0;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
name_len = ntfs_utf16_to_nls(sbi, (struct le_str *)&fname->name_len,
|
|
Kmods SIG |
d83023 |
diff --git a/src/file.c b/src/file.c
|
|
Kmods SIG |
d83023 |
index 424450e77ad52ae550e8de444dc393411d97cde6..fef57141b161747101d6898b8da774a372de5cbf 100644
|
|
Kmods SIG |
d83023 |
--- a/src/file.c
|
|
Kmods SIG |
d83023 |
+++ b/src/file.c
|
|
Kmods SIG |
d83023 |
@@ -737,7 +737,7 @@ int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
|
|
Kmods SIG |
d83023 |
umode_t mode = inode->i_mode;
|
|
Kmods SIG |
d83023 |
int err;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- if (sbi->options.no_acs_rules) {
|
|
Kmods SIG |
d83023 |
+ if (sbi->options->no_acs_rules) {
|
|
Kmods SIG |
d83023 |
/* "No access rules" - Force any changes of time etc. */
|
|
Kmods SIG |
d83023 |
attr->ia_valid |= ATTR_FORCE;
|
|
Kmods SIG |
d83023 |
/* and disable for editing some attributes. */
|
|
Kmods SIG |
d83023 |
@@ -1185,7 +1185,7 @@ static int ntfs_file_release(struct inode *inode, struct file *file)
|
|
Kmods SIG |
d83023 |
int err = 0;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
/* If we are last writer on the inode, drop the block reservation. */
|
|
Kmods SIG |
d83023 |
- if (sbi->options.prealloc && ((file->f_mode & FMODE_WRITE) &&
|
|
Kmods SIG |
d83023 |
+ if (sbi->options->prealloc && ((file->f_mode & FMODE_WRITE) &&
|
|
Kmods SIG |
d83023 |
atomic_read(&inode->i_writecount) == 1)) {
|
|
Kmods SIG |
d83023 |
ni_lock(ni);
|
|
Kmods SIG |
d83023 |
down_write(&ni->file.run_lock);
|
|
Kmods SIG |
d83023 |
diff --git a/src/inode.c b/src/inode.c
|
|
Kmods SIG |
d83023 |
index db2a5a4c38e4d62abfb2c7ca16947cd766982b13..9f740fd301b24f2b1a67da0b78d091b3a3ae4705 100644
|
|
Kmods SIG |
d83023 |
--- a/src/inode.c
|
|
Kmods SIG |
d83023 |
+++ b/src/inode.c
|
|
Kmods SIG |
d83023 |
@@ -49,8 +49,8 @@ static struct inode *ntfs_read_mft(struct inode *inode,
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
inode->i_op = NULL;
|
|
Kmods SIG |
d83023 |
/* Setup 'uid' and 'gid' */
|
|
Kmods SIG |
d83023 |
- inode->i_uid = sbi->options.fs_uid;
|
|
Kmods SIG |
d83023 |
- inode->i_gid = sbi->options.fs_gid;
|
|
Kmods SIG |
d83023 |
+ inode->i_uid = sbi->options->fs_uid;
|
|
Kmods SIG |
d83023 |
+ inode->i_gid = sbi->options->fs_gid;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
err = mi_init(&ni->mi, sbi, ino);
|
|
Kmods SIG |
d83023 |
if (err)
|
|
Kmods SIG |
d83023 |
@@ -229,7 +229,7 @@ static struct inode *ntfs_read_mft(struct inode *inode,
|
|
Kmods SIG |
d83023 |
t32 = le16_to_cpu(attr->nres.run_off);
|
|
Kmods SIG |
d83023 |
}
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- mode = S_IFREG | (0777 & sbi->options.fs_fmask_inv);
|
|
Kmods SIG |
d83023 |
+ mode = S_IFREG | (0777 & sbi->options->fs_fmask_inv);
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
if (!attr->non_res) {
|
|
Kmods SIG |
d83023 |
ni->ni_flags |= NI_FLAG_RESIDENT;
|
|
Kmods SIG |
d83023 |
@@ -272,7 +272,7 @@ static struct inode *ntfs_read_mft(struct inode *inode,
|
|
Kmods SIG |
d83023 |
goto out;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
mode = sb->s_root
|
|
Kmods SIG |
d83023 |
- ? (S_IFDIR | (0777 & sbi->options.fs_dmask_inv))
|
|
Kmods SIG |
d83023 |
+ ? (S_IFDIR | (0777 & sbi->options->fs_dmask_inv))
|
|
Kmods SIG |
d83023 |
: (S_IFDIR | 0777);
|
|
Kmods SIG |
d83023 |
goto next_attr;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
@@ -443,7 +443,7 @@ static struct inode *ntfs_read_mft(struct inode *inode,
|
|
Kmods SIG |
d83023 |
goto out;
|
|
Kmods SIG |
d83023 |
}
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- if ((sbi->options.sys_immutable &&
|
|
Kmods SIG |
d83023 |
+ if ((sbi->options->sys_immutable &&
|
|
Kmods SIG |
d83023 |
(std5->fa & FILE_ATTRIBUTE_SYSTEM)) &&
|
|
Kmods SIG |
d83023 |
!S_ISFIFO(mode) && !S_ISSOCK(mode) && !S_ISLNK(mode)) {
|
|
Kmods SIG |
d83023 |
inode->i_flags |= S_IMMUTABLE;
|
|
Kmods SIG |
d83023 |
@@ -1244,7 +1244,7 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
|
|
Kmods SIG |
d83023 |
* }
|
|
Kmods SIG |
d83023 |
*/
|
|
Kmods SIG |
d83023 |
} else if (S_ISREG(mode)) {
|
|
Kmods SIG |
d83023 |
- if (sbi->options.sparse) {
|
|
Kmods SIG |
d83023 |
+ if (sbi->options->sparse) {
|
|
Kmods SIG |
d83023 |
/* Sparsed regular file, cause option 'sparse'. */
|
|
Kmods SIG |
d83023 |
fa = FILE_ATTRIBUTE_SPARSE_FILE |
|
|
Kmods SIG |
d83023 |
FILE_ATTRIBUTE_ARCHIVE;
|
|
Kmods SIG |
d83023 |
diff --git a/src/ntfs_fs.h b/src/ntfs_fs.h
|
|
Kmods SIG |
d83023 |
index 97e682ebcfb94dd1ad9677ed5ee82bb6a88401a5..98c90c399ee2f447f3ad5f0847c56ca7561f17fb 100644
|
|
Kmods SIG |
d83023 |
--- a/src/ntfs_fs.h
|
|
Kmods SIG |
d83023 |
+++ b/src/ntfs_fs.h
|
|
Kmods SIG |
d83023 |
@@ -279,7 +279,7 @@ struct ntfs_sb_info {
|
|
Kmods SIG |
d83023 |
#endif
|
|
Kmods SIG |
d83023 |
} compress;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- struct ntfs_mount_options options;
|
|
Kmods SIG |
d83023 |
+ struct ntfs_mount_options *options;
|
|
Kmods SIG |
d83023 |
struct ratelimit_state msg_ratelimit;
|
|
Kmods SIG |
d83023 |
};
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
diff --git a/src/super.c b/src/super.c
|
|
Kmods SIG |
d83023 |
index 6cb689605089e2a592143a2b4154a97211f39c6c..0f38203420515b6386bdd51e83c402c431743946 100644
|
|
Kmods SIG |
d83023 |
--- a/src/super.c
|
|
Kmods SIG |
d83023 |
+++ b/src/super.c
|
|
Kmods SIG |
d83023 |
@@ -389,11 +389,11 @@ static int ntfs_remount(struct super_block *sb, int *flags, char *data)
|
|
Kmods SIG |
d83023 |
return -ENOMEM;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
/* Store original options. */
|
|
Kmods SIG |
d83023 |
- memcpy(&old_opts, &sbi->options, sizeof(old_opts));
|
|
Kmods SIG |
d83023 |
- clear_mount_options(&sbi->options);
|
|
Kmods SIG |
d83023 |
- memset(&sbi->options, 0, sizeof(sbi->options));
|
|
Kmods SIG |
d83023 |
+ memcpy(&old_opts, sbi->options, sizeof(old_opts));
|
|
Kmods SIG |
d83023 |
+ clear_mount_options(sbi->options);
|
|
Kmods SIG |
d83023 |
+ memset(sbi->options, 0, sizeof(old_opts));
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- err = ntfs_parse_options(sb, data, 0, &sbi->options);
|
|
Kmods SIG |
d83023 |
+ err = ntfs_parse_options(sb, data, 0, sbi->options);
|
|
Kmods SIG |
d83023 |
if (err)
|
|
Kmods SIG |
d83023 |
goto restore_opts;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
@@ -409,7 +409,7 @@ static int ntfs_remount(struct super_block *sb, int *flags, char *data)
|
|
Kmods SIG |
d83023 |
sync_filesystem(sb);
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
if (ro_rw && (sbi->volume.flags & VOLUME_FLAG_DIRTY) &&
|
|
Kmods SIG |
d83023 |
- !sbi->options.force) {
|
|
Kmods SIG |
d83023 |
+ !sbi->options->force) {
|
|
Kmods SIG |
d83023 |
ntfs_warn(sb, "volume is dirty and \"force\" flag is not set!");
|
|
Kmods SIG |
d83023 |
err = -EINVAL;
|
|
Kmods SIG |
d83023 |
goto restore_opts;
|
|
Kmods SIG |
d83023 |
@@ -422,8 +422,8 @@ static int ntfs_remount(struct super_block *sb, int *flags, char *data)
|
|
Kmods SIG |
d83023 |
goto out;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
restore_opts:
|
|
Kmods SIG |
d83023 |
- clear_mount_options(&sbi->options);
|
|
Kmods SIG |
d83023 |
- memcpy(&sbi->options, &old_opts, sizeof(old_opts));
|
|
Kmods SIG |
d83023 |
+ clear_mount_options(sbi->options);
|
|
Kmods SIG |
d83023 |
+ memcpy(sbi->options, &old_opts, sizeof(old_opts));
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
out:
|
|
Kmods SIG |
d83023 |
kfree(orig_data);
|
|
Kmods SIG |
d83023 |
@@ -506,7 +506,8 @@ static noinline void put_ntfs(struct ntfs_sb_info *sbi)
|
|
Kmods SIG |
d83023 |
xpress_free_decompressor(sbi->compress.xpress);
|
|
Kmods SIG |
d83023 |
lzx_free_decompressor(sbi->compress.lzx);
|
|
Kmods SIG |
d83023 |
#endif
|
|
Kmods SIG |
d83023 |
- clear_mount_options(&sbi->options);
|
|
Kmods SIG |
d83023 |
+ clear_mount_options(sbi->options);
|
|
Kmods SIG |
d83023 |
+ kfree(sbi->options);
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
kfree(sbi);
|
|
Kmods SIG |
d83023 |
}
|
|
Kmods SIG |
d83023 |
@@ -545,7 +546,7 @@ static int ntfs_show_options(struct seq_file *m, struct dentry *root)
|
|
Kmods SIG |
d83023 |
{
|
|
Kmods SIG |
d83023 |
struct super_block *sb = root->d_sb;
|
|
Kmods SIG |
d83023 |
struct ntfs_sb_info *sbi = sb->s_fs_info;
|
|
Kmods SIG |
d83023 |
- struct ntfs_mount_options *opts = &sbi->options;
|
|
Kmods SIG |
d83023 |
+ struct ntfs_mount_options *opts = sbi->options;
|
|
Kmods SIG |
d83023 |
struct user_namespace *user_ns = seq_user_ns(m);
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
if (opts->uid)
|
|
Kmods SIG |
d83023 |
@@ -930,6 +931,12 @@ static int ntfs_fill_super(struct super_block *sb, void *data, int silent)
|
|
Kmods SIG |
d83023 |
if (!sbi)
|
|
Kmods SIG |
d83023 |
return -ENOMEM;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
+ sbi->options = kzalloc(sizeof(struct ntfs_mount_options), GFP_NOFS);
|
|
Kmods SIG |
d83023 |
+ if (!sbi->options) {
|
|
Kmods SIG |
d83023 |
+ kfree(sbi);
|
|
Kmods SIG |
d83023 |
+ return -ENOMEM;
|
|
Kmods SIG |
d83023 |
+ }
|
|
Kmods SIG |
d83023 |
+
|
|
Kmods SIG |
d83023 |
sb->s_fs_info = sbi;
|
|
Kmods SIG |
d83023 |
sbi->sb = sb;
|
|
Kmods SIG |
d83023 |
sb->s_flags |= SB_NODIRATIME;
|
|
Kmods SIG |
d83023 |
@@ -942,7 +949,7 @@ static int ntfs_fill_super(struct super_block *sb, void *data, int silent)
|
|
Kmods SIG |
d83023 |
ratelimit_state_init(&sbi->msg_ratelimit, DEFAULT_RATELIMIT_INTERVAL,
|
|
Kmods SIG |
d83023 |
DEFAULT_RATELIMIT_BURST);
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- err = ntfs_parse_options(sb, data, silent, &sbi->options);
|
|
Kmods SIG |
d83023 |
+ err = ntfs_parse_options(sb, data, silent, sbi->options);
|
|
Kmods SIG |
d83023 |
if (err)
|
|
Kmods SIG |
d83023 |
goto out;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
@@ -1074,7 +1081,7 @@ static int ntfs_fill_super(struct super_block *sb, void *data, int silent)
|
|
Kmods SIG |
d83023 |
goto out;
|
|
Kmods SIG |
d83023 |
}
|
|
Kmods SIG |
d83023 |
} else if (sbi->volume.flags & VOLUME_FLAG_DIRTY) {
|
|
Kmods SIG |
d83023 |
- if (!is_ro && !sbi->options.force) {
|
|
Kmods SIG |
d83023 |
+ if (!is_ro && !sbi->options->force) {
|
|
Kmods SIG |
d83023 |
ntfs_warn(
|
|
Kmods SIG |
d83023 |
sb,
|
|
Kmods SIG |
d83023 |
"volume is dirty and \"force\" flag is not set!");
|
|
Kmods SIG |
d83023 |
@@ -1394,7 +1401,7 @@ int ntfs_discard(struct ntfs_sb_info *sbi, CLST lcn, CLST len)
|
|
Kmods SIG |
d83023 |
if (sbi->flags & NTFS_FLAGS_NODISCARD)
|
|
Kmods SIG |
d83023 |
return -EOPNOTSUPP;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
- if (!sbi->options.discard)
|
|
Kmods SIG |
d83023 |
+ if (!sbi->options->discard)
|
|
Kmods SIG |
d83023 |
return -EOPNOTSUPP;
|
|
Kmods SIG |
d83023 |
|
|
Kmods SIG |
d83023 |
lbo = (u64)lcn << sbi->cluster_bits;
|
|
Kmods SIG |
d83023 |
diff --git a/src/xattr.c b/src/xattr.c
|
|
Kmods SIG |
d83023 |
index b15d532e4a17087b06284d82965c21224f1d4f35..ac4b37bf8832a51b9e32b7c4feb6f1c762d5b271 100644
|
|
Kmods SIG |
d83023 |
--- a/src/xattr.c
|
|
Kmods SIG |
d83023 |
+++ b/src/xattr.c
|
|
Kmods SIG |
d83023 |
@@ -769,7 +769,7 @@ int ntfs_acl_chmod(struct user_namespace *mnt_userns, struct inode *inode)
|
|
Kmods SIG |
d83023 |
int ntfs_permission(struct user_namespace *mnt_userns, struct inode *inode,
|
|
Kmods SIG |
d83023 |
int mask)
|
|
Kmods SIG |
d83023 |
{
|
|
Kmods SIG |
d83023 |
- if (ntfs_sb(inode->i_sb)->options.no_acs_rules) {
|
|
Kmods SIG |
d83023 |
+ if (ntfs_sb(inode->i_sb)->options->no_acs_rules) {
|
|
Kmods SIG |
d83023 |
/* "No access rules" mode - Allow all changes. */
|
|
Kmods SIG |
d83023 |
return 0;
|
|
Kmods SIG |
d83023 |
}
|
|
Kmods SIG |
d83023 |
--
|
|
Kmods SIG |
d83023 |
2.31.1
|
|
Kmods SIG |
d83023 |
|