427 Star 1.5K Fork 1.6K

GVPopenEuler/kernel

 / 详情

【openEuler-1.0-LTS】bd_link_disk_holder创建sysfs触发unable to handle page fault

已完成
任务
创建于  
2022-09-30 10:04

问题描述:

[306602.940455] BUG: unable to handle page fault for address: 000000011241cec7
[306602.940542] sd 5:0:0:1: [sdl] Synchronizing SCSI cache
[306602.941846] #PF: supervisor read access in kernel mode
[306602.941849] #PF: error_code(0x0000) - not-present page
[306602.941852] PGD 0 P4D 0
[306602.941862] Oops: 0000 [#1] SMP PTI
[306602.941875] CPU: 3 PID: 2465367 Comm: multipath Kdump: loaded Tainted: G        W  O      5.10.0-60.18.0.50.h478.eulerosv2r11.x86_64 #1
[306602.941880] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58-20220525_182517-szxrtosci10000 04/01/2014
[306602.941891] RIP: 0010:kernfs_new_node+0x22/0x60
[306602.941901] Code: cc cc 66 0f 1f 44 00 00 0f 1f 44 00 00 41 54 41 89 cb 0f b7 ca 48 89 f2 53 48 8b 47 08 48 89 fb 48 89 de 48 85 c0 48 0f 44 c7 <48> 8b 78 50 41 51 45 89 c1 45 89 d8 e8 4d ee ff ff 5a 49 89 c4 48
[306602.954824] RSP: 0018:ffffa178419539e8 EFLAGS: 00010206
[306602.955849] RAX: 000000011241ce77 RBX: ffff9596828395a0 RCX: 000000000000a1ff
[306602.957181] RDX: ffff9595ada828b0 RSI: ffff9596828395a0 RDI: ffff9596828395a0
[306602.958540] RBP: ffff95959a9a2a80 R08: 0000000000000000 R09: 0000000000000004
[306602.959872] R10: ffff9595ca0bf930 R11: 0000000000000000 R12: ffff9595ada828b0
[306602.961201] R13: ffff9596828395a0 R14: 0000000000000001 R15: ffff9595948c5c80
[306602.962550] FS:  00007f64baa10200(0000) GS:ffff9596bad80000(0000) knlGS:0000000000000000
[306602.964026] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[306602.965127] CR2: 000000011241cec7 CR3: 000000011923e003 CR4: 0000000000170ee0
[306602.966466] Call Trace:
[306602.967064]  kernfs_create_link+0x31/0xa0
[306602.967898]  sysfs_do_create_link_sd+0x61/0xc0
[306602.968803]  bd_link_disk_holder+0x10a/0x180
[306602.969730]  dm_get_table_device+0x10b/0x1f0 [dm_mod]
[306602.970740]  __dm_get_device+0x1e2/0x280 [dm_mod]
[306602.971699]  ? kmem_cache_alloc_trace+0x2fb/0x410
[306602.972666]  parse_path+0xca/0x200 [dm_multipath]
[306602.973605]  parse_priority_group+0x19d/0x1f0 [dm_multipath]
[306602.974702]  multipath_ctr+0x27a/0x491 [dm_multipath]
[306602.975699]  dm_table_add_target+0x177/0x360 [dm_mod]
[306602.976707]  table_load+0x12b/0x380 [dm_mod]
[306602.977581]  ctl_ioctl+0x199/0x290 [dm_mod]
[306602.978460]  ? dev_suspend+0xd0/0xd0 [dm_mod]
[306602.979364]  dm_ctl_ioctl+0xa/0x20 [dm_mod]
[306602.980219]  __se_sys_ioctl+0x85/0xc0
[306602.981017]  do_syscall_64+0x33/0x40
[306602.981785]  entry_SYSCALL_64_after_hwframe+0x61/0xc6
[306602.982808] RIP: 0033:0x7f64bb00d98b
[306602.983572] Code: ff ff ff 85 c0 79 8b 49 c7 c4 ff ff ff ff 5b 5d 4c 89 e0 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 5d e4 0e 00 f7 d8 64 89 01 48
[306602.986789] RSP: 002b:00007ffc216a7ba8 EFLAGS: 00000202 ORIG_RAX: 0000000000000010
[306602.988189] RAX: ffffffffffffffda RBX: 00007f64bb143950 RCX: 00007f64bb00d98b
[306602.989523] RDX: 00005645961ab810 RSI: 00000000c138fd09 RDI: 0000000000000004
[306602.990853] RBP: 00007f64bb1805d3 R08: 00007ffc216a58f0 R09: 00007f64bb190078
[306602.992179] R10: 0000000000000001 R11: 0000000000000202 R12: 00005645961ab810
[306602.993516] R13: 00005645961ab840 R14: 00005645961ab8c0 R15: 0000564596167a90

评论 (2)

LuoMeng 创建了任务 3年前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
3年前

复现:

diff --git a/fs/block_dev.c b/fs/block_dev.c
index e324b7ace8f1..1520342df03a 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -35,6 +35,7 @@
 #include <linux/uaccess.h>
 #include <linux/suspend.h>
 #include "internal.h"
+#include <linux/delay.h>
 
 struct bdev_inode {
        struct block_device bdev;
@@ -1292,6 +1293,9 @@ int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk)
        if (ret)
                goto out_free;
 
+       printk("%s delay begin\n", __func__);
+       msleep(10 * 1000);                                                                                                                                                                                        
+       printk("%s delay end\n", __func__);
        ret = add_symlink(bdev->bd_part->holder_dir, &disk_to_dev(disk)->kobj);
        if (ret)
                goto out_del;

【预设条件和测试步骤】
1、创建linear设备
dmsetup create aaa --table "0 10000 linear /dev/sda 0"
2、在时延期间删除sda设备
echo 1 > /sys/block/sda/device/delete
3、触发问题

登录 后才可以发表评论

状态
负责人
项目
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
预计工期 (小时)
开始日期   -   截止日期
-
置顶选项
优先级
分支
参与者(2)
5329419 openeuler ci bot 1632792936 LuoMeng-Luo_meng_meng
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助