grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 2/7] erofs: Replace 64-bit modulo with bitwise operations


From: Vladimir Serbinenko
Subject: [PATCH v2 2/7] erofs: Replace 64-bit modulo with bitwise operations
Date: Tue, 3 Sep 2024 20:58:47 +0300

Otherwise depending on compiler we end up with umoddi3 reference and
failed module dependency resolution

Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
---
 grub-core/fs/erofs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/grub-core/fs/erofs.c b/grub-core/fs/erofs.c
index 46cfc2e5c..f2a82e988 100644
--- a/grub-core/fs/erofs.c
+++ b/grub-core/fs/erofs.c
@@ -357,13 +357,13 @@ erofs_map_blocks_flatmode (grub_fshelp_node_t node,
     {
       if (grub_add (erofs_iloc (node), erofs_inode_size (node), &map->m_pa) ||
          grub_add (map->m_pa, erofs_inode_xattr_ibody_size (node), &map->m_pa) 
||
-         grub_add (map->m_pa, map->m_la % blocksz, &map->m_pa))
+         grub_add (map->m_pa, map->m_la & (blocksz - 1), &map->m_pa))
        return grub_error (GRUB_ERR_OUT_OF_RANGE, "m_pa overflow when handling 
tailpacking");
       if (grub_sub (file_size, map->m_la, &map->m_plen))
        return grub_error (GRUB_ERR_OUT_OF_RANGE, "m_plen overflow when 
handling tailpacking");
 
       /* No overflow as map->m_plen <= UINT64_MAX - blocksz + 1. */
-      if (((map->m_pa % blocksz) + map->m_plen) > blocksz)
+      if (((map->m_pa & (blocksz - 1)) + map->m_plen) > blocksz)
        return grub_error (GRUB_ERR_BAD_FS,
                            "inline data cross block boundary @ inode %" 
PRIuGRUB_UINT64_T,
                            node->ino);
-- 
2.39.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]