用于rip而不是临时寄存器的testb指令

时间:2017-12-18 12:07:06

标签: gcc assembly linux-kernel crash gdb

我正在处理“Bad RIP值”代码

的崩溃
[1651708.697654] BUG: unable to handle kernel paging request at 00000002fbb0a000
[1651708.699801] IP: [<00000002fbb0a000>] 0x2fbb09fff
[1651708.701873] PGD 813f48067 PUD 0
[1651708.703919] Oops: 0010 [#1] SMP
[1651708.705957] Modules linked in: gtx(POE) gab(POE) llt(POE) veki(POE) nfsv3 rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache sctp_diag sctp dccp_diag dccp tcp_diag udp_diag inet_diag unix_diag af_packet_diag netlink_diag xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 tun bridge stp llc ebtable_filter ebtables ip6table_filter ip6_tables iptable_filter ib_ipoib rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm mlx4_ib ib_core dm_mirror dm_region_hash dm_log dm_mod sb_edac edac_core intel_powerclamp coretemp intel_rapl iosf_mbi kvm_intel kvm ipmi_ssif irqbypass ipmi_si ipmi_devintf joydev shpchp crc32_pclmul ghash_clmulni_intel aesni_intel lrw ipmi_msghandler gf128mul
[1651708.719503]  dcdbas glue_helper ablk_helper acpi_pad acpi_power_meter pcspkr cryptd mei_me mei iTCO_wdt iTCO_vendor_support wmi sg lpc_ich nfsd auth_rpcgss nfs_acl lockd grace sunrpc binfmt_misc ip_tables ext4 mbcache jbd2 sd_mod sr_mod cdrom crc_t10dif crct10dif_generic mlx4_en mgag200 i2c_algo_bit bnx2x drm_kms_helper qla2xxx syscopyarea sysfillrect sysimgblt fb_sys_fops ttm ahci libahci drm mlx4_core libata crct10dif_pclmul crct10dif_common crc32c_intel tg3 megaraid_sas mdio libcrc32c scsi_transport_fc i2c_core devlink scsi_tgt ptp pps_core [last unloaded: gtx]
[1651708.731897] CPU: 5 PID: 39665 Comm: kgtx Tainted: P        W  OE  ------------   3.10.0-693.el7.x86_64 #1

[1651708.734401] Hardware name: Dell Inc. PowerEdge R720/0X6H47, BIOS 2.5.4 01/22/2016
[1651708.736923] task: ffff88082be78000 ti: ffff88057aa90000 task.ti: ffff88057aa90000
[1651708.739469] RIP: 0010:[<00000002fbb0a000>]  [<00000002fbb0a000>] 0x2fbb09fff
[1651708.742062] RSP: 0018:ffff88057aa93dd0  EFLAGS: 00010206
[1651708.744654] RAX: 00000002fbb0a000 RBX: ffff88082d893600 RCX: 000000018080005a
[1651708.747278] RDX: ffff88057aa93fd8 RSI: ffff8803f8784620 RDI: ffff88082bfca980
[1651708.749894] RBP: ffff88057aa93e70 R08: ffff8805c239a740 R09: 000000018080005a
[1651708.752493] R10: 00000000c239a801 R11: ffffea001708e680 R12: ffff88082bfca980
[1651708.755099] R13: 0000000000000001 R14: 00000000fffffff0 R15: ffff88082d377900
[1651708.757686] FS:  0000000000000000(0000) GS:ffff88082f080000(0063) knlGS:00000000f756e6c0
[1651708.760252] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
[1651708.762765] CR2: 00000002fbb0a000 CR3: 0000000731f3e000 CR4: 00000000000407e0
[1651708.765313] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[1651708.767854] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[1651708.770394] Stack:
[1651708.772935]  ffffffffc09ba1c2 ffffffffc09c1d87 0000000000000000 ffffffffc09be380
[1651708.775547]  ffffffffc09be020 ffffffffc09b8970 0000000000000079 0000000000000000
[1651708.778148]  ffffffffc09be660 0000000000000000 ffffffffc09bda00 ffffffffc09bda90
[1651708.780730] Call Trace:
[1651708.783295]  [<ffffffffc09ba1c2>] ? gtx_init_port+0x4c2/0x980 [gtx]

[1651708.785879]  [<ffffffffc09be380>] ? gtx_workthread+0x2d0/0x2d0 [gtx]
[1651708.788421]  [<ffffffffc09be020>] ? gtx_send_msg+0x500/0x500 [gtx]
[1651708.790905]  [<ffffffffc09b8970>] ? gtx_rdma_msg_srcseq_eq+0x30/0x30 [gtx]
[1651708.793391]  [<ffffffffc09be660>] ? gtx_gab_recv+0x2e0/0x2e0 [gtx]
[1651708.795856]  [<ffffffffc09bda00>] ? gtx_rdma_send_msg+0x620/0x620 [gtx]
[1651708.798297]  [<ffffffffc09bda90>] ? gtx_gab_rbackenable+0x90/0x90 [gtx]
[1651708.800709]  [<ffffffffc09ba72d>] gtx_register+0xad/0x130 [gtx]
[1651708.803102]  [<ffffffffc09bb7bd>] gtx_ioctl+0x1ed/0x540 [gtx]
[1651708.805458]  [<ffffffffc09bf6e2>] gtx_lnx_ioctl+0x82/0x1b0 [gtx]
[1651708.807790]  [<ffffffffc09bf843>] gtx_lnx_compat_ioctl+0x33/0x40 [gtx]
[1651708.810113]  [<ffffffff8125d52b>] compat_sys_ioctl+0xeb/0x330
[1651708.812397]  [<ffffffff816b6fcc>] sysenter_dispatch+0x7/0x21
[1651708.814642] Code:  Bad RIP value.
[1651708.816864] RIP  [<00000002fbb0a000>] 0x2fbb09fff
[1651708.819108]  RSP <ffff88057aa93dd0>
[1651708.821337] CR2: 00000002fbb0a000

gtx/drv/objlinux-x86_64-3.10.0-693.el7.x86_64/gtxdrv.c: 1341
0xffffffffc09ba1c2 <gtx_init_port+1218>:        testb  $0x40,0x8e47(%rip)        # 0xffffffffc09c3010 <gtx_deb_mask>
0xffffffffc09ba1c9 <gtx_init_port+1225>:        jne    0xffffffffc09ba436 <gtx_init_port+1846>

我对使用RIP测试某个特定位的testb指令有疑问。我期待0x40作为位掩码。

编译器使用 RIP with testb 是否正确使用,并且RIP值是错误的指令地址:00000002fbb0a000

0 个答案:

没有答案