* [PATCH v2 0/2] vfs: follow-on fixes for i_ino widening
@ 2026-03-13 18:45 Jeff Layton
2026-03-13 18:45 ` [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() Jeff Layton
2026-03-13 18:45 ` [PATCH v2 2/2] EVM: add comment describing why ino field is still unsigned long Jeff Layton
0 siblings, 2 replies; 8+ messages in thread
From: Jeff Layton @ 2026-03-13 18:45 UTC (permalink / raw)
To: Ryusuke Konishi, Viacheslav Dubeyko, Christian Brauner,
Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg,
Paul Moore, James Morris, Serge E. Hallyn
Cc: linux-nilfs, linux-kernel, linux-integrity, linux-security-module,
linux-fsdevel, Jeff Layton, kernel test robot
Just some patches to fix follow-on issues reported after the
inode->i_ino widening series. Christian, could you toss these
onto the vfs-7.1.kino branch?
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
Changes in v2:
- rename variable in nilfs2 patch from "rem" to "index"
- reword comment and commit log for better accuracy in EVM patch
---
Jeff Layton (2):
nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group()
EVM: add comment describing why ino field is still unsigned long
fs/nilfs2/bmap.c | 9 ++++++---
security/integrity/evm/evm_crypto.c | 6 ++++++
2 files changed, 12 insertions(+), 3 deletions(-)
---
base-commit: 9840bb66e7e5dffd72b03201318f154a10b06b4a
change-id: 20260310-iino-u64-424fa570d850
Best regards,
--
Jeff Layton <jlayton@kernel.org>
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() 2026-03-13 18:45 [PATCH v2 0/2] vfs: follow-on fixes for i_ino widening Jeff Layton @ 2026-03-13 18:45 ` Jeff Layton 2026-03-14 12:47 ` David Laight 2026-03-13 18:45 ` [PATCH v2 2/2] EVM: add comment describing why ino field is still unsigned long Jeff Layton 1 sibling, 1 reply; 8+ messages in thread From: Jeff Layton @ 2026-03-13 18:45 UTC (permalink / raw) To: Ryusuke Konishi, Viacheslav Dubeyko, Christian Brauner, Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Paul Moore, James Morris, Serge E. Hallyn Cc: linux-nilfs, linux-kernel, linux-integrity, linux-security-module, linux-fsdevel, Jeff Layton, kernel test robot With the change to make inode->i_ino a u64, the build started failing on 32-bit ARM with: ERROR: modpost: "__aeabi_uldivmod" [fs/nilfs2/nilfs2.ko] undefined! Fix this by using the 64-bit division interfaces in nilfs_bmap_find_target_in_group(). Fixes: 998a59d371c2 ("treewide: fix missed i_ino format specifier conversions") Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202603100602.KPxiClIO-lkp@intel.com/ Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com> Acked-by: Ryusuke Konishi <konishi.ryusuke@gmail.com> Signed-off-by: Jeff Layton <jlayton@kernel.org> --- fs/nilfs2/bmap.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c index 824f2bd91c167965ec3a660202b6e6c5f1fe007e..abcf5252578ad24f694bfccf525893674bfcb4bc 100644 --- a/fs/nilfs2/bmap.c +++ b/fs/nilfs2/bmap.c @@ -455,11 +455,14 @@ __u64 nilfs_bmap_find_target_in_group(const struct nilfs_bmap *bmap) { struct inode *dat = nilfs_bmap_get_dat(bmap); unsigned long entries_per_group = nilfs_palloc_entries_per_group(dat); - unsigned long group = bmap->b_inode->i_ino / entries_per_group; + unsigned long group; + u32 index; + + group = div_u64(bmap->b_inode->i_ino, entries_per_group); + div_u64_rem(bmap->b_inode->i_ino, NILFS_BMAP_GROUP_DIV, &index); return group * entries_per_group + - (bmap->b_inode->i_ino % NILFS_BMAP_GROUP_DIV) * - (entries_per_group / NILFS_BMAP_GROUP_DIV); + index * (entries_per_group / NILFS_BMAP_GROUP_DIV); } static struct lock_class_key nilfs_bmap_dat_lock_key; -- 2.53.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() 2026-03-13 18:45 ` [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() Jeff Layton @ 2026-03-14 12:47 ` David Laight 2026-03-14 12:59 ` Jeff Layton 0 siblings, 1 reply; 8+ messages in thread From: David Laight @ 2026-03-14 12:47 UTC (permalink / raw) To: Jeff Layton Cc: Ryusuke Konishi, Viacheslav Dubeyko, Christian Brauner, Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Paul Moore, James Morris, Serge E. Hallyn, linux-nilfs, linux-kernel, linux-integrity, linux-security-module, linux-fsdevel, kernel test robot On Fri, 13 Mar 2026 14:45:20 -0400 Jeff Layton <jlayton@kernel.org> wrote: > With the change to make inode->i_ino a u64, the build started failing on > 32-bit ARM with: > > ERROR: modpost: "__aeabi_uldivmod" [fs/nilfs2/nilfs2.ko] undefined! > > Fix this by using the 64-bit division interfaces in > nilfs_bmap_find_target_in_group(). > > Fixes: 998a59d371c2 ("treewide: fix missed i_ino format specifier conversions") > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202603100602.KPxiClIO-lkp@intel.com/ > Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com> > Acked-by: Ryusuke Konishi <konishi.ryusuke@gmail.com> > Signed-off-by: Jeff Layton <jlayton@kernel.org> > --- > fs/nilfs2/bmap.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c > index 824f2bd91c167965ec3a660202b6e6c5f1fe007e..abcf5252578ad24f694bfccf525893674bfcb4bc 100644 > --- a/fs/nilfs2/bmap.c > +++ b/fs/nilfs2/bmap.c > @@ -455,11 +455,14 @@ __u64 nilfs_bmap_find_target_in_group(const struct nilfs_bmap *bmap) > { > struct inode *dat = nilfs_bmap_get_dat(bmap); > unsigned long entries_per_group = nilfs_palloc_entries_per_group(dat); > - unsigned long group = bmap->b_inode->i_ino / entries_per_group; Are you sure entries_per_group can be more than 32 bits? It looks like something that will be the same size on 32 and 64bit. > + unsigned long group; > + u32 index; > + > + group = div_u64(bmap->b_inode->i_ino, entries_per_group); You don't need the full 64 by 64 divide. IIRC there are both div_u64_u32() and div_u64_ulong(). > + div_u64_rem(bmap->b_inode->i_ino, NILFS_BMAP_GROUP_DIV, &index); NILFD_BMAP_GROUP_DIV is 8 (and probably has to be a power of 2). So: index = bmap->b_inode->i_ino & (NILFS_BMAP_GROUP_DIV - 1); is the same and likely much faster to calculate. (The compiler will have done that optimisation before.) David > > return group * entries_per_group + > - (bmap->b_inode->i_ino % NILFS_BMAP_GROUP_DIV) * > - (entries_per_group / NILFS_BMAP_GROUP_DIV); > + index * (entries_per_group / NILFS_BMAP_GROUP_DIV); > } > > static struct lock_class_key nilfs_bmap_dat_lock_key; > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() 2026-03-14 12:47 ` David Laight @ 2026-03-14 12:59 ` Jeff Layton 2026-03-16 18:06 ` Ryusuke Konishi 0 siblings, 1 reply; 8+ messages in thread From: Jeff Layton @ 2026-03-14 12:59 UTC (permalink / raw) To: David Laight Cc: Ryusuke Konishi, Viacheslav Dubeyko, Christian Brauner, Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Paul Moore, James Morris, Serge E. Hallyn, linux-nilfs, linux-kernel, linux-integrity, linux-security-module, linux-fsdevel, kernel test robot On Sat, 2026-03-14 at 12:47 +0000, David Laight wrote: > On Fri, 13 Mar 2026 14:45:20 -0400 > Jeff Layton <jlayton@kernel.org> wrote: > > > With the change to make inode->i_ino a u64, the build started failing on > > 32-bit ARM with: > > > > ERROR: modpost: "__aeabi_uldivmod" [fs/nilfs2/nilfs2.ko] undefined! > > > > Fix this by using the 64-bit division interfaces in > > nilfs_bmap_find_target_in_group(). > > > > Fixes: 998a59d371c2 ("treewide: fix missed i_ino format specifier conversions") > > Reported-by: kernel test robot <lkp@intel.com> > > Closes: https://lore.kernel.org/oe-kbuild-all/202603100602.KPxiClIO-lkp@intel.com/ > > Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com> > > Acked-by: Ryusuke Konishi <konishi.ryusuke@gmail.com> > > Signed-off-by: Jeff Layton <jlayton@kernel.org> > > --- > > fs/nilfs2/bmap.c | 9 ++++++--- > > 1 file changed, 6 insertions(+), 3 deletions(-) > > > > diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c > > index 824f2bd91c167965ec3a660202b6e6c5f1fe007e..abcf5252578ad24f694bfccf525893674bfcb4bc 100644 > > --- a/fs/nilfs2/bmap.c > > +++ b/fs/nilfs2/bmap.c > > @@ -455,11 +455,14 @@ __u64 nilfs_bmap_find_target_in_group(const struct nilfs_bmap *bmap) > > { > > struct inode *dat = nilfs_bmap_get_dat(bmap); > > unsigned long entries_per_group = nilfs_palloc_entries_per_group(dat); > > - unsigned long group = bmap->b_inode->i_ino / entries_per_group; > > Are you sure entries_per_group can be more than 32 bits? > It looks like something that will be the same size on 32 and 64bit. > I'm not sure of anything here. I'm just want to get this to compile on all arches. FWIW, I'm not looking to optimize anything in this patch. > > + unsigned long group; > > + u32 index; > > + > > + group = div_u64(bmap->b_inode->i_ino, entries_per_group); > > You don't need the full 64 by 64 divide. > IIRC there are both div_u64_u32() and div_u64_ulong(). > > > + div_u64_rem(bmap->b_inode->i_ino, NILFS_BMAP_GROUP_DIV, &index); > > NILFD_BMAP_GROUP_DIV is 8 (and probably has to be a power of 2). > So: > index = bmap->b_inode->i_ino & (NILFS_BMAP_GROUP_DIV - 1); > is the same and likely much faster to calculate. > (The compiler will have done that optimisation before.) > > That all sounds reasonable to me. At this point though, it would be better if the NILFS2 folks stepped in with how they'd prefer this be done. > > > > > return group * entries_per_group + > > - (bmap->b_inode->i_ino % NILFS_BMAP_GROUP_DIV) * > > - (entries_per_group / NILFS_BMAP_GROUP_DIV); > > + index * (entries_per_group / NILFS_BMAP_GROUP_DIV); > > } > > > > static struct lock_class_key nilfs_bmap_dat_lock_key; > > -- Jeff Layton <jlayton@kernel.org> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() 2026-03-14 12:59 ` Jeff Layton @ 2026-03-16 18:06 ` Ryusuke Konishi 2026-03-16 18:50 ` Jeff Layton 0 siblings, 1 reply; 8+ messages in thread From: Ryusuke Konishi @ 2026-03-16 18:06 UTC (permalink / raw) To: David Laight, Jeff Layton Cc: Viacheslav Dubeyko, Christian Brauner, Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Paul Moore, James Morris, Serge E. Hallyn, linux-nilfs, linux-kernel, linux-integrity, linux-security-module, linux-fsdevel, kernel test robot On Sat, Mar 14, 2026 at 9:59 PM Jeff Layton wrote: > > On Sat, 2026-03-14 at 12:47 +0000, David Laight wrote: > > On Fri, 13 Mar 2026 14:45:20 -0400 > > Jeff Layton <jlayton@kernel.org> wrote: > > > > > With the change to make inode->i_ino a u64, the build started failing on > > > 32-bit ARM with: > > > > > > ERROR: modpost: "__aeabi_uldivmod" [fs/nilfs2/nilfs2.ko] undefined! > > > > > > Fix this by using the 64-bit division interfaces in > > > nilfs_bmap_find_target_in_group(). > > > > > > Fixes: 998a59d371c2 ("treewide: fix missed i_ino format specifier conversions") > > > Reported-by: kernel test robot <lkp@intel.com> > > > Closes: https://lore.kernel.org/oe-kbuild-all/202603100602.KPxiClIO-lkp@intel.com/ > > > Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com> > > > Acked-by: Ryusuke Konishi <konishi.ryusuke@gmail.com> > > > Signed-off-by: Jeff Layton <jlayton@kernel.org> > > > --- > > > fs/nilfs2/bmap.c | 9 ++++++--- > > > 1 file changed, 6 insertions(+), 3 deletions(-) > > > > > > diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c > > > index 824f2bd91c167965ec3a660202b6e6c5f1fe007e..abcf5252578ad24f694bfccf525893674bfcb4bc 100644 > > > --- a/fs/nilfs2/bmap.c > > > +++ b/fs/nilfs2/bmap.c > > > @@ -455,11 +455,14 @@ __u64 nilfs_bmap_find_target_in_group(const struct nilfs_bmap *bmap) > > > { > > > struct inode *dat = nilfs_bmap_get_dat(bmap); > > > unsigned long entries_per_group = nilfs_palloc_entries_per_group(dat); > > > - unsigned long group = bmap->b_inode->i_ino / entries_per_group; > > > > Are you sure entries_per_group can be more than 32 bits? > > It looks like something that will be the same size on 32 and 64bit. > > > > I'm not sure of anything here. I'm just want to get this to compile on > all arches. FWIW, I'm not looking to optimize anything in this patch. > > > > + unsigned long group; > > > + u32 index; > > > + > > > + group = div_u64(bmap->b_inode->i_ino, entries_per_group); > > > > You don't need the full 64 by 64 divide. > > IIRC there are both div_u64_u32() and div_u64_ulong(). Isn't the type of divisor in div_u64() u32? Since entries_per_group cannot exceed 32 bits according to the current specification, I think using div_u64() is fine. > > > > > + div_u64_rem(bmap->b_inode->i_ino, NILFS_BMAP_GROUP_DIV, &index); > > > > NILFD_BMAP_GROUP_DIV is 8 (and probably has to be a power of 2). > > So: > > index = bmap->b_inode->i_ino & (NILFS_BMAP_GROUP_DIV - 1); > > is the same and likely much faster to calculate. > > (The compiler will have done that optimisation before.) > > > > > > That all sounds reasonable to me. At this point though, it would be > better if the NILFS2 folks stepped in with how they'd prefer this be > done. Yes, indeed. It seems that the application of optimizations will change, so this proposed correction is better. Since NILFS_BMAP_GROUP_DIV is a fixed constant and cannot be anything other than a power of 2, could you please adopt this proposed correction with the following comment? #define NILFS_BMAP_GROUP_DIV 8 /* must be a power of 2 */ Thanks, Ryusuke Konishi > > > > > > > > > return group * entries_per_group + > > > - (bmap->b_inode->i_ino % NILFS_BMAP_GROUP_DIV) * > > > - (entries_per_group / NILFS_BMAP_GROUP_DIV); > > > + index * (entries_per_group / NILFS_BMAP_GROUP_DIV); > > > } > > > > > > static struct lock_class_key nilfs_bmap_dat_lock_key; > > > > > -- > Jeff Layton <jlayton@kernel.org> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() 2026-03-16 18:06 ` Ryusuke Konishi @ 2026-03-16 18:50 ` Jeff Layton 0 siblings, 0 replies; 8+ messages in thread From: Jeff Layton @ 2026-03-16 18:50 UTC (permalink / raw) To: Ryusuke Konishi, David Laight Cc: Viacheslav Dubeyko, Christian Brauner, Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Paul Moore, James Morris, Serge E. Hallyn, linux-nilfs, linux-kernel, linux-integrity, linux-security-module, linux-fsdevel, kernel test robot On Tue, 2026-03-17 at 03:06 +0900, Ryusuke Konishi wrote: > On Sat, Mar 14, 2026 at 9:59 PM Jeff Layton wrote: > > > > On Sat, 2026-03-14 at 12:47 +0000, David Laight wrote: > > > On Fri, 13 Mar 2026 14:45:20 -0400 > > > Jeff Layton <jlayton@kernel.org> wrote: > > > > > > > With the change to make inode->i_ino a u64, the build started failing on > > > > 32-bit ARM with: > > > > > > > > ERROR: modpost: "__aeabi_uldivmod" [fs/nilfs2/nilfs2.ko] undefined! > > > > > > > > Fix this by using the 64-bit division interfaces in > > > > nilfs_bmap_find_target_in_group(). > > > > > > > > Fixes: 998a59d371c2 ("treewide: fix missed i_ino format specifier conversions") > > > > Reported-by: kernel test robot <lkp@intel.com> > > > > Closes: https://lore.kernel.org/oe-kbuild-all/202603100602.KPxiClIO-lkp@intel.com/ > > > > Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com> > > > > Acked-by: Ryusuke Konishi <konishi.ryusuke@gmail.com> > > > > Signed-off-by: Jeff Layton <jlayton@kernel.org> > > > > --- > > > > fs/nilfs2/bmap.c | 9 ++++++--- > > > > 1 file changed, 6 insertions(+), 3 deletions(-) > > > > > > > > diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c > > > > index 824f2bd91c167965ec3a660202b6e6c5f1fe007e..abcf5252578ad24f694bfccf525893674bfcb4bc 100644 > > > > --- a/fs/nilfs2/bmap.c > > > > +++ b/fs/nilfs2/bmap.c > > > > @@ -455,11 +455,14 @@ __u64 nilfs_bmap_find_target_in_group(const struct nilfs_bmap *bmap) > > > > { > > > > struct inode *dat = nilfs_bmap_get_dat(bmap); > > > > unsigned long entries_per_group = nilfs_palloc_entries_per_group(dat); > > > > - unsigned long group = bmap->b_inode->i_ino / entries_per_group; > > > > > > Are you sure entries_per_group can be more than 32 bits? > > > It looks like something that will be the same size on 32 and 64bit. > > > > > > > I'm not sure of anything here. I'm just want to get this to compile on > > all arches. FWIW, I'm not looking to optimize anything in this patch. > > > > > > + unsigned long group; > > > > + u32 index; > > > > + > > > > + group = div_u64(bmap->b_inode->i_ino, entries_per_group); > > > > > > You don't need the full 64 by 64 divide. > > > IIRC there are both div_u64_u32() and div_u64_ulong(). > > Isn't the type of divisor in div_u64() u32? > Since entries_per_group cannot exceed 32 bits according to the current > specification, I think using div_u64() is fine. > Yep, it is: static inline u64 div_u64(u64 dividend, u32 divisor) > > > > > > > + div_u64_rem(bmap->b_inode->i_ino, NILFS_BMAP_GROUP_DIV, &index); > > > > > > NILFD_BMAP_GROUP_DIV is 8 (and probably has to be a power of 2). > > > So: > > > index = bmap->b_inode->i_ino & (NILFS_BMAP_GROUP_DIV - 1); > > > is the same and likely much faster to calculate. > > > (The compiler will have done that optimisation before.) > > > > > > > > > > That all sounds reasonable to me. At this point though, it would be > > better if the NILFS2 folks stepped in with how they'd prefer this be > > done. > > Yes, indeed. It seems that the application of optimizations will > change, so this proposed correction is better. > > Since NILFS_BMAP_GROUP_DIV is a fixed constant and cannot be anything > other than a power of 2, could you please adopt this proposed > correction with the following comment? > > #define NILFS_BMAP_GROUP_DIV 8 /* must be a power of 2 */ > Even better, lets use a compile-time assertion: BUILD_BUG_ON_NOT_POWER_OF_TWO(NILFS_BMAP_GROUP_DIV); I'll send a respin. Thanks! -- Jeff Layton <jlayton@kernel.org> ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] EVM: add comment describing why ino field is still unsigned long 2026-03-13 18:45 [PATCH v2 0/2] vfs: follow-on fixes for i_ino widening Jeff Layton 2026-03-13 18:45 ` [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() Jeff Layton @ 2026-03-13 18:45 ` Jeff Layton 2026-03-13 19:50 ` Mimi Zohar 1 sibling, 1 reply; 8+ messages in thread From: Jeff Layton @ 2026-03-13 18:45 UTC (permalink / raw) To: Ryusuke Konishi, Viacheslav Dubeyko, Christian Brauner, Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Paul Moore, James Morris, Serge E. Hallyn Cc: linux-nilfs, linux-kernel, linux-integrity, linux-security-module, linux-fsdevel, Jeff Layton Mimi pointed out that we didn't widen the inode number field in struct h_misc alongside the inode->i_ino widening. While we could make an equivalent change there, that would require EVM resigning on all 32-bit hosts. Instead, leave the field as an unsigned long. This should have no effect on 64-bit hosts, and allow things to continue working on 32-bit hosts in the cases where the i_ino fits in 32-bits. Add a comment explaining why it's being left as unsigned long. Cc: Mimi Zohar <zohar@linux.ibm.com> Signed-off-by: Jeff Layton <jlayton@kernel.org> --- security/integrity/evm/evm_crypto.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c index c0ca4eedb0fe5d5c30f45f515a4bc90248ec64ea..1c41af2f91a60a714878ff93b554c90e45546503 100644 --- a/security/integrity/evm/evm_crypto.c +++ b/security/integrity/evm/evm_crypto.c @@ -144,6 +144,12 @@ static void hmac_add_misc(struct shash_desc *desc, struct inode *inode, char type, char *digest) { struct h_misc { + /* + * Although inode->i_ino is now u64, this field remains + * unsigned long to allow existing HMAC and signatures from + * 32-bit hosts to continue working when i_ino hasn't changed + * and fits in a u32. + */ unsigned long ino; __u32 generation; uid_t uid; -- 2.53.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] EVM: add comment describing why ino field is still unsigned long 2026-03-13 18:45 ` [PATCH v2 2/2] EVM: add comment describing why ino field is still unsigned long Jeff Layton @ 2026-03-13 19:50 ` Mimi Zohar 0 siblings, 0 replies; 8+ messages in thread From: Mimi Zohar @ 2026-03-13 19:50 UTC (permalink / raw) To: Jeff Layton, Ryusuke Konishi, Viacheslav Dubeyko, Christian Brauner, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Paul Moore, James Morris, Serge E. Hallyn Cc: linux-nilfs, linux-kernel, linux-integrity, linux-security-module, linux-fsdevel On Fri, 2026-03-13 at 14:45 -0400, Jeff Layton wrote: > Mimi pointed out that we didn't widen the inode number field in struct > h_misc alongside the inode->i_ino widening. While we could make an > equivalent change there, that would require EVM resigning on all 32-bit > hosts. > > Instead, leave the field as an unsigned long. This should have no effect > on 64-bit hosts, and allow things to continue working on 32-bit hosts in > the cases where the i_ino fits in 32-bits. > > Add a comment explaining why it's being left as unsigned long. > > Cc: Mimi Zohar <zohar@linux.ibm.com> > Signed-off-by: Jeff Layton <jlayton@kernel.org> Thanks, Jeff. Reviewed-by: Mimi Zohar <zohar@linux.ibm.com> > --- > security/integrity/evm/evm_crypto.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c > index c0ca4eedb0fe5d5c30f45f515a4bc90248ec64ea..1c41af2f91a60a714878ff93b554c90e45546503 100644 > --- a/security/integrity/evm/evm_crypto.c > +++ b/security/integrity/evm/evm_crypto.c > @@ -144,6 +144,12 @@ static void hmac_add_misc(struct shash_desc *desc, struct inode *inode, > char type, char *digest) > { > struct h_misc { > + /* > + * Although inode->i_ino is now u64, this field remains > + * unsigned long to allow existing HMAC and signatures from > + * 32-bit hosts to continue working when i_ino hasn't changed > + * and fits in a u32. > + */ > unsigned long ino; > __u32 generation; > uid_t uid; ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-03-16 18:50 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-13 18:45 [PATCH v2 0/2] vfs: follow-on fixes for i_ino widening Jeff Layton 2026-03-13 18:45 ` [PATCH v2 1/2] nilfs2: fix 64-bit division operations in nilfs_bmap_find_target_in_group() Jeff Layton 2026-03-14 12:47 ` David Laight 2026-03-14 12:59 ` Jeff Layton 2026-03-16 18:06 ` Ryusuke Konishi 2026-03-16 18:50 ` Jeff Layton 2026-03-13 18:45 ` [PATCH v2 2/2] EVM: add comment describing why ino field is still unsigned long Jeff Layton 2026-03-13 19:50 ` Mimi Zohar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox