[RFC PATCH v1 7/7] tomoyo: Fix inode numbers in logs

Mickaël Salaün
2024-10-10T15:34:27Z

Use the new inode_get_ino() helper to log the user space's view of
inode's numbers instead of the private kernel values.

Cc: Kentaro Takeda <takedakn@nttdata.co.jp>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Mickaël Salaün <mic@digikod.net>
---

Because of the required type changes, there might be some side effects.
Please review carefully.
---
security/tomoyo/common.h | 4 ++--
security/tomoyo/condition.c | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/security/tomoyo/common.h b/security/tomoyo/common.h
index 0e8e2e959aef..c670a8e3c351 100644
--- a/security/tomoyo/common.h
+++ b/security/tomoyo/common.h
@@ -524,7 +524,7 @@ struct tomoyo_name_union {

/* Structure for holding a number. */
struct tomoyo_number_union {
- unsigned long values[2];
+ u64 values[2];
struct tomoyo_group *group; /* Maybe NULL. */
/* One of values in "enum tomoyo_value_type". */
u8 value_type[2];
@@ -567,7 +567,7 @@ struct tomoyo_address_group {
struct tomoyo_mini_stat {
kuid_t uid;
kgid_t gid;
- ino_t ino;
+ u64 ino;
umode_t mode;
dev_t dev;
dev_t rdev;
diff --git a/security/tomoyo/condition.c b/security/tomoyo/condition.c
index f8bcc083bb0d..a44ea574fd89 100644
--- a/security/tomoyo/condition.c
+++ b/security/tomoyo/condition.c
@@ -741,7 +741,7 @@ void tomoyo_get_attributes(struct tomoyo_obj_info *obj)

stat->uid = inode->i_uid;
stat->gid = inode->i_gid;
- stat->ino = inode->i_ino;
+ stat->ino = inode_get_ino(inode);
stat->mode = inode->i_mode;
stat->dev = inode->i_sb->s_dev;
stat->rdev = inode->i_rdev;
@@ -766,8 +766,8 @@ bool tomoyo_condition(struct tomoyo_request_info *r,
const struct tomoyo_condition *cond)
{
u32 i;
- unsigned long min_v[2] = { 0, 0 };
- unsigned long max_v[2] = { 0, 0 };
+ u64 min_v[2] = { 0, 0 };
+ u64 max_v[2] = { 0, 0 };
const struct tomoyo_condition_element *condp;
const struct tomoyo_number_union *numbers_p;
const struct tomoyo_name_union *names_p;
@@ -834,7 +834,7 @@ bool tomoyo_condition(struct tomoyo_request_info *r,
/* Check numeric or bit-op expressions. */
for (j = 0; j < 2; j++) {
const u8 index = j ? right : left;
- unsigned long value = 0;
+ u64 value = 0;

switch (index) {
case TOMOYO_TASK_UID:
--
2.46.1