]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
Fix VTOY_LINUX_REMOUNT option for latest CentOS 9 Stream. (#2827)
authorlongpanda <admin@ventoy.net>
Sun, 19 May 2024 07:35:05 +0000 (15:35 +0800)
committerlongpanda <admin@ventoy.net>
Sun, 19 May 2024 07:35:05 +0000 (15:35 +0800)
DMPATCH/dmpatch.c
IMG/cpio/ventoy/hook/ventoy-hook-lib.sh
IMG/cpio_x86/ventoy/tool/dm_patch_64.ko
IMG/cpio_x86/ventoy/tool/dm_patch_ibt_64.ko
VtoyTool/vtoykmod.c
VtoyTool/vtoytool/00/vtoytool_32
VtoyTool/vtoytool/00/vtoytool_64
VtoyTool/vtoytool/00/vtoytool_aa64
VtoyTool/vtoytool/00/vtoytool_m64e

index 3dd7947426061c9203a5c171c0063ad2643407a7..d711a3a00d596a7e8b5d5f579d292eca71aaf196 100644 (file)
@@ -58,6 +58,7 @@ typedef struct ko_param
     unsigned long blkdev_put_addr;
     unsigned long bdev_open_addr;
     unsigned long kv_subminor;
     unsigned long blkdev_put_addr;
     unsigned long bdev_open_addr;
     unsigned long kv_subminor;
+    unsigned long bdev_file_open_addr;
     unsigned long padding[1];
 }ko_param;
 
     unsigned long padding[1];
 }ko_param;
 
@@ -318,12 +319,19 @@ static unsigned int notrace dmpatch_patch_claim_ptr(void)
 
     if (dmpatch_kv_above(6, 7, 0)) /* >= 6.7 kernel */
     {
 
     if (dmpatch_kv_above(6, 7, 0)) /* >= 6.7 kernel */
     {
-        vdebug("Get addr: 0x%lx %lu 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
+        vdebug("Get addr: 0x%lx %lu open 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
         offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
         if (offset1 == 0)
         {
             vdebug("call bdev_open_addr Not found\n");
         offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_open_addr);
         if (offset1 == 0)
         {
             vdebug("call bdev_open_addr Not found\n");
-            return 1;
+
+            vdebug("Get addr: 0x%lx %lu file_open 0x%lx\n", g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_file_open_addr);
+            offset1 = dmpatch_find_call_offset(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, g_ko_param.bdev_file_open_addr);
+            if (offset1 == 0)
+            {            
+                vdebug("call bdev_file_open_addr Not found\n");
+                return 1;
+            }
         }
     }
     else
         }
     }
     else
@@ -339,6 +347,7 @@ static unsigned int notrace dmpatch_patch_claim_ptr(void)
             return 1;
         }
     }
             return 1;
         }
     }
+
     
     vdebug("call addr1:0x%lx  call addr2:0x%lx\n", 
         g_ko_param.sym_get_addr + offset1, 
     
     vdebug("call addr1:0x%lx  call addr2:0x%lx\n", 
         g_ko_param.sym_get_addr + offset1, 
index 99badaf1cb270493a1a23f5e6a92b86cb37c0354..2ebf801ae0864067ae41a81b2f191f4999d73a11 100644 (file)
@@ -356,6 +356,10 @@ ventoy_dm_patch() {
     vtlog "get bdev_open_by_dev address $vtLine"        
     bdev_open_addr=$(echo $vtLine | $AWK '{print $1}')
     
     vtlog "get bdev_open_by_dev address $vtLine"        
     bdev_open_addr=$(echo $vtLine | $AWK '{print $1}')
     
+    vtLine=$($VTOY_PATH/tool/vtoyksym bdev_file_open_by_dev $VTOY_PATH/kallsyms) 
+    vtlog "get bdev_file_open_by_dev address $vtLine"        
+    bdev_file_open_addr=$(echo $vtLine | $AWK '{print $1}')
+    
 
     if $GREP -m1 -q 'close_table_device.isra' $VTOY_PATH/kallsyms; then
         vtLine=$($VTOY_PATH/tool/vtoyksym close_table_device.isra $VTOY_PATH/kallsyms)
 
     if $GREP -m1 -q 'close_table_device.isra' $VTOY_PATH/kallsyms; then
         vtLine=$($VTOY_PATH/tool/vtoyksym close_table_device.isra $VTOY_PATH/kallsyms)
@@ -398,7 +402,7 @@ ventoy_dm_patch() {
     vtlog put_addr=$put_addr  put_size=$put_size
     vtlog blkdev_get_addr=$blkdev_get_addr blkdev_put_addr=$blkdev_put_addr
     vtlog kprobe_reg_addr=$kprobe_reg_addr  kprobe_unreg_addr=$kprobe_unreg_addr
     vtlog put_addr=$put_addr  put_size=$put_size
     vtlog blkdev_get_addr=$blkdev_get_addr blkdev_put_addr=$blkdev_put_addr
     vtlog kprobe_reg_addr=$kprobe_reg_addr  kprobe_unreg_addr=$kprobe_unreg_addr
-    vtlog ro_addr=$ro_addr  rw_addr=$rw_addr  printk_addr=$printk_addr bdev_open_addr=$bdev_open_addr
+    vtlog ro_addr=$ro_addr  rw_addr=$rw_addr  printk_addr=$printk_addr bdev_open_addr=$bdev_open_addr bdev_file_open_addr=$bdev_file_open_addr
 
     if [ "$get_addr" = "0" -o "$put_addr" = "0" ]; then
         vtlog "Invalid symbol address"
 
     if [ "$get_addr" = "0" -o "$put_addr" = "0" ]; then
         vtlog "Invalid symbol address"
@@ -460,7 +464,7 @@ ventoy_dm_patch() {
     #step2: fill parameters
     vtPgsize=$($VTOY_PATH/tool/vtoyksym -p)
     
     #step2: fill parameters
     vtPgsize=$($VTOY_PATH/tool/vtoyksym -p)
     
-    vtPrams="$VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKVMajor $vtIBT $vtKVMinor $blkdev_get_addr $blkdev_put_addr $vtKVSubMinor $bdev_open_addr  $vtDebug"
+    vtPrams="$VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtKVMajor $vtIBT $vtKVMinor $blkdev_get_addr $blkdev_put_addr $vtKVSubMinor $bdev_open_addr $bdev_file_open_addr  $vtDebug"
     
     
     vtlog "$VTOY_PATH/tool/vtoykmod -f $vtPrams"
     
     
     vtlog "$VTOY_PATH/tool/vtoykmod -f $vtPrams"
index 47f8d73cb686ae7acf136f6c1146e8033a8d0aa5..4253fcac7ca2a93701873da42e9ffda8d9a5c59b 100644 (file)
Binary files a/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko and b/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko differ
index 91c31f0e5a8fe25f499ac65eb1c3fb77f4100613..cfbd46a34f025775dacd28220e03c043c878ae05 100644 (file)
Binary files a/IMG/cpio_x86/ventoy/tool/dm_patch_ibt_64.ko and b/IMG/cpio_x86/ventoy/tool/dm_patch_ibt_64.ko differ
index 06c206082f09ec25f93fce467b7141b9d9b4afc4..1e73db2a1c24efda1e1d1d2b7d260e7367aee365 100644 (file)
@@ -193,6 +193,7 @@ typedef struct ko_param
     unsigned long blkdev_put_addr;
     unsigned long bdev_open_addr;
     unsigned long kv_subminor;
     unsigned long blkdev_put_addr;
     unsigned long bdev_open_addr;
     unsigned long kv_subminor;
+    unsigned long bdev_file_open_addr;
     unsigned long padding[1];
 }ko_param;
 
     unsigned long padding[1];
 }ko_param;
 
@@ -581,6 +582,7 @@ int vtoykmod_fill_param(char **argv)
             param->blkdev_put_addr = strtoul(argv[15], NULL, 16);
             param->kv_subminor = strtoul(argv[16], NULL, 10);
             param->bdev_open_addr = strtoul(argv[17], NULL, 16);
             param->blkdev_put_addr = strtoul(argv[15], NULL, 16);
             param->kv_subminor = strtoul(argv[16], NULL, 10);
             param->bdev_open_addr = strtoul(argv[17], NULL, 16);
+            param->bdev_file_open_addr = strtoul(argv[18], NULL, 16);
 
             debug("pgsize=%lu (%s)\n", param->pgsize, argv[1]);
             debug("printk_addr=0x%lx (%s)\n", param->printk_addr, argv[2]);
 
             debug("pgsize=%lu (%s)\n", param->pgsize, argv[1]);
             debug("printk_addr=0x%lx (%s)\n", param->printk_addr, argv[2]);
@@ -599,6 +601,7 @@ int vtoykmod_fill_param(char **argv)
             debug("blkdev_put_addr=0x%lx (%s)\n", param->blkdev_put_addr, argv[15]);
             debug("kv_subminor=%lu (%s)\n", param->kv_subminor, argv[16]);
             debug("bdev_open_addr=0x%lx (%s)\n", param->bdev_open_addr, argv[17]);
             debug("blkdev_put_addr=0x%lx (%s)\n", param->blkdev_put_addr, argv[15]);
             debug("kv_subminor=%lu (%s)\n", param->kv_subminor, argv[16]);
             debug("bdev_open_addr=0x%lx (%s)\n", param->bdev_open_addr, argv[17]);
+            debug("bdev_file_open_addr=0x%lx (%s)\n", param->bdev_file_open_addr, argv[18]);
             
             break;
         }
             
             break;
         }
index 8ce94e98eda30fbd9f892fa180260c0eda7333bc..2c662faa6a3a1a42ca8dab2ec7d93d6d79a93ee3 100644 (file)
Binary files a/VtoyTool/vtoytool/00/vtoytool_32 and b/VtoyTool/vtoytool/00/vtoytool_32 differ
index 3edbed59265a7e9d07ef9feed4b15b0704106490..d9985638ead143cde22d80eb07e7bbfcb4db6325 100644 (file)
Binary files a/VtoyTool/vtoytool/00/vtoytool_64 and b/VtoyTool/vtoytool/00/vtoytool_64 differ
index 7229c3a371ca3d1f1148f0c748ac955d9f2400f5..58beda87089eb6409439d9b5e9c932421c9e9204 100644 (file)
Binary files a/VtoyTool/vtoytool/00/vtoytool_aa64 and b/VtoyTool/vtoytool/00/vtoytool_aa64 differ
index db997a1548cbf3a4497f076214925ff9834bf870..2b9f11d504f60ba6db01e26082bbefced3d834b5 100644 (file)
Binary files a/VtoyTool/vtoytool/00/vtoytool_m64e and b/VtoyTool/vtoytool/00/vtoytool_m64e differ