<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body
        {line-height:1.5}
blockquote
        {margin-top:0px;
        margin-bottom:0px;
        margin-left:0.5em}
p
        {margin-top:0px;
        margin-bottom:0px}
body
        {font-size:16pt;
        font-family:微软雅黑;
        color:rgb(0,128,0);
        line-height:1.5}
-->
</style>
</head>
<body>
<div><font color="#000000">As it is described below,</font><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5; background-color:window">the&nbsp;</span><span style="color:rgb(0,0,0); font-size:16pt; background-color:window; line-height:19px">resource
 lock have been released</span></div>
<div><span style="color:rgb(0,0,0); font-size:16pt; background-color:window; line-height:19px">in the function of &nbsp;</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5">dlmunlock_common
</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:19px; background-color:window">.&nbsp;</span><span style="color:rgb(0,0,0); line-height:19px; font-size:16pt; background-color:window">while dumping the info of lock resource,</span></div>
<div><span style="color:rgb(0,0,0); line-height:19px; font-size:16pt; background-color:window">NULL pointer will access. &nbsp;</span><font color="#000000" style="font-size:16pt; line-height:1.5; background-color:window">This is&nbsp;</font><span style="font-size:16pt; line-height:1.5; background-color:window"><font color="#000000">probably</font></span><span style="font-size:16pt; line-height:1.5; color:rgb(0,0,0); background-color:window">&nbsp;the
 reason.</span></div>
<div><span style="line-height:19px; background-color:rgb(255,255,255)"><font color="#000000"><br>
</font></span></div>
<div><font color="#000000"><span style="line-height:19px">1. A</span><span style="line-height:1.5">s we all know</span></font><span style="font-size:16pt; line-height:1.5; background-color:window">&nbsp;</span><span style="font-size:16pt; line-height:1.5; color:rgb(0,0,0)">function
 stack,</span><font color="#000000" style="font-size:16pt; line-height:1.5; background-color:window"><span style="line-height:19px">ocfs2_dlm_unlock -&gt;</span></font><span style="font-size:16pt; line-height:1.5; color:rgb(0,0,0)">dlmunlock-&gt;</span><span style="font-size:16pt; line-height:1.5; color:rgb(0,0,0)">dlmunlock_remote</span></div>
<div><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5">&nbsp; &nbsp;&nbsp;</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5">-&gt;</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5">dlmunlock_common-&gt;</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5">dlm_send_remote_unlock_request.</span></div>
<div><font color="#000000">2. &nbsp;in dlmunlock _common,&nbsp;</font><span style="line-height:1.5"><font color="#000000">actions may be 11,</font></span></div>
<div><font color="#000000"><span style="line-height:1.5">&nbsp; &nbsp; actions = (DLM_UNLOCK_FREE_LOCK |&nbsp;</span><span style="line-height:1.5">DLM_UNLOCK_CALL_AST |&nbsp;</span><span style="line-height:1.5">DLM_UNLOCK_REMOVE_LOCK).</span></font></div>
<div><font color="#000000"><span style="line-height:1.5">&nbsp;</span><span style="line-height:1.5">&nbsp; &nbsp;but when there is &nbsp;</span></font><span style="font-size:16pt; line-height:1.5; background-color:window"><font color="#000000">probably</font>&nbsp;</span><font color="#000000" style="font-size:16pt; line-height:1.5; background-color:window"><span style="line-height:1.5">the&nbsp;</span></font><font color="#000000" style="font-size:16pt; line-height:1.5; background-color:window"><span style="line-height:1.5">return
 value &quot;</span><span style="line-height:19px">DLM_IVLOCKID&quot;&nbsp;</span><span style="line-height:1.5">of</span><span style="line-height:1.5"> &nbsp;</span><span style="line-height:1.5">dlm_send_remote_unlock_reques</span></font><span style="font-size:16pt; line-height:1.5; color:rgb(0,0,0); background-color:window">t,&nbsp;</span></div>
<div><span style="color:rgb(0,0,0)">&nbsp; &nbsp;the function dlm_lock_put still be called two times for releasing lock resourse&nbsp;</span></div>
<div><span style="color:rgb(0,0,0)">&nbsp; &nbsp;in the action &nbsp;</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5; background-color:window">DLM_UNLOCK_FREE_LOCK|&nbsp;</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5; background-color:window">DLM_UNLOCK_REMOVE_LOCK.</span></div>
<div><font color="#000000"><span style="line-height:1.5">3.&nbsp;</span><span style="line-height:1.5">in</span><span style="line-height:1.5">
</span><span style="line-height:1.5">final</span><span style="line-height:1.5"> processing of&nbsp;</span><span style="line-height:19px">ocfs2_dlm_dump_lksb, NULL pointer and BUG will &nbsp;access.</span></font></div>
<div><font color="#000000">&nbsp; &nbsp;Such a patch that&nbsp;</font><span style="color:rgb(0,0,0)">described below&nbsp;</span><font color="#000000">should be reasonable,</font></div>
<div>
<div style="line-height:normal"><font color="#000000">&nbsp;</font><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5">&nbsp; &nbsp;&nbsp;</span><span style="color:rgb(0,0,0); font-size:16pt; line-height:1.5">&nbsp; &nbsp;&nbsp;</span><span style="background-color:window; color:rgb(0,0,0); font-size:16pt">Greate
 appreciate for anyone's reply.</span></div>
<div style="line-height:normal"><span style="font-size:16pt; color:rgb(0,0,0); background-color:window">&nbsp; Best Regar</span><span style="font-size:16pt; color:rgb(0,0,0); background-color:window">ds</span></div>
</div>
<div><br>
</div>
<div><span style="line-height:19px"><font color="#000000">&nbsp;&nbsp;</font></span></div>
<hr color="#b5c4df" size="1" align="left" style="width:210px; height:1px">
<div><span>
<div style="margin:10px; font-family:verdana; font-size:10pt">
<div>zhangguanghui 10102</div>
</div>
</span></div>
<blockquote style="margin-top:0px; margin-bottom:0px; margin-left:0.5em">
<div>&nbsp;</div>
<div style="border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0cm 0cm 0cm">
<div style="padding-right:8px; padding-left:8px; font-size:12px; font-family:tahoma; color:#000000; background:#efefef; padding-bottom:8px; padding-top:8px">
<div><b>发件人:</b>&nbsp;<a href="mailto:guozhonghua@h3c.com">guozhonghua 02084 (RD)</a></div>
<div><b>发送时间:</b>&nbsp;2015-05-25&nbsp;10:43</div>
<div><b>收件人:</b>&nbsp;<a href="mailto:ocfs2-devel@oss.oracle.com">ocfs2-devel@oss.oracle.com</a></div>
<div><b>抄送:</b>&nbsp;<a href="mailto:shi.changkuo@h3c.com">shichangkuo</a>; <a href="mailto:zhang.guanghui@h3c.com">
zhangguanghui 10102 (RD)</a>; <a href="mailto:changlimin@h3c.com">changlimin 00148</a></div>
<div><b>主题:</b>&nbsp;ocfs2 drop lock patch required any reviews, thanks</div>
</div>
</div>
<div>
<div class="FoxDiv20150526091047260067">
<p><font size="2">Hi, All<br>
<br>
As one resource unlocked, or evicted from the fs, the resource lock may had been released in the function ocfs2_dlm_unlock.<br>
But the return code is not zero, dump the info of the lock resource, because the dlm resource lock had been released, so we would have NULL pointer accessed.<br>
Is the BUG call required with ret value is not zero?<br>
<br>
diff -cp dlmglue_org.c dlmglue.c<br>
*** dlmglue_org.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2015-05-25 10:11:59.086856234 &#43;0800<br>
--- dlmglue.c&nbsp;&nbsp; 2015-05-25 10:13:51.414859206 &#43;0800<br>
*************** static int ocfs2_drop_lock(struct ocfs2_<br>
*** 3140,3147 ****<br>
  ret = ocfs2_dlm_unlock(osb-&gt;cconn, &amp;lockres-&gt;l_lksb, lkm_flags);<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ret) {<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ocfs2_log_dlm_error(&quot;ocfs2_dlm_unlock&quot;, ret, lockres);<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mlog(ML_ERROR, &quot;lockres flags: %lu\n&quot;, lockres-&gt;l_flags);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ocfs2_dlm_dump_lksb(&amp;lockres-&gt;l_lksb);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BUG();<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mlog(0, &quot;lock %s, successful return from ocfs2_dlm_unlock\n&quot;,<br>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; lockres-&gt;l_name);<br>
--- 3140,3145 ----<br>
<br>
<br>
<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733003] (ocfs2dc,6401,3):ocfs2_unlock_ast:1129 ERROR: Dlm passes error -22 for lock M000000000000001f89012100000000, unlock_action 2<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733022] (ocfs2dc,6401,3):dlmunlock:688 ERROR: dlm status = DLM_IVLOCKID<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733028] (ocfs2dc,6401,3):ocfs2_drop_lock:3132 ERROR: DLM error -22 while calling ocfs2_dlm_unlock on resource M000000000000001f89012100000000<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733034] (ocfs2dc,6401,3):ocfs2_drop_lock:3133 ERROR: lockres flags: 194<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733060] BUG: unable to handle kernel NULL pointer dereference at 00000000000000b0<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733065] IP: [&lt;ffffffff8175847e&gt;] _raw_spin_lock&#43;0xe/0x50<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733083] PGD 0<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733086] Oops: 0002 [#1] SMP<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733090] Modules linked in: ip6table_filter(F) ip6_tables(F) iptable_filter(F) ip_tables(F) ebtable_nat(F) ebtables(F) x_tables(F) ocfs2(OF) quota_tree(F) drbd(F) lru_cache(F) 8021q(F) mrp(F) garp(F) stp(F) llc(F) vhost_net(F)
 macvtap(F) macvlan(F) vhost(F) kvm_intel(F) kvm(F) ib_iser(F) rdma_cm(F) ib_cm(F) iw_cm(F) ib_sa(F) ib_mad(F) ib_core(F) ib_addr(F) iscsi_tcp(F) libiscsi_tcp(F) libiscsi(F) scsi_transport_iscsi(F) ocfs2_dlmfs(OF) ocfs2_stack_o2cb(OF) ocfs2_dlm(OF) ocfs2_nodemanager(OF)
 ocfs2_stackglue(OF) configfs(F) openvswitch(OF) gre(F) nfsd(F) nfs_acl(F) auth_rpcgss(F) nfs(F) fscache(F) lockd(F) dm_round_robin(F) sunrpc(F) ses(F) joydev(F) dm_multipath(F) enclosure(F) scsi_dh(F) gpio_ich(F) psmouse(F) sb_edac(F) ioatdma(F) edac_core(F)
 dca(F) serio_raw(F) hpilo(F) hid_generic(F) acpi_power_meter(F) lpc_ich(F) hpwdt(F) mac_hid(F) lp(F) parport(F) usbhid(F) bnx2x(F) hid(F) bfa(F) libcrc32c(F) tg3(F) mdio(F) scsi_transport_fc(F) ptp(F) hpsa(F) scsi_tgt(F) pps_core(F)<br>
May&nbsp; 7 09:45:01 FC-07 kernel: nbd(F) [last unloaded: ipmi_si]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733192] CPU: 3 PID: 6401 Comm: ocfs2dc Tainted: GF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; W&nbsp; O 3.13.6 #1<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733196] Hardware name: H3C FlexServer R390, BIOS P70 02/10/2014<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733200] task: ffff882179b68000 ti: ffff8821736d6000 task.ti: ffff8821736d6000<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733203] RIP: 0010:[&lt;ffffffff8175847e&gt;]&nbsp; [&lt;ffffffff8175847e&gt;] _raw_spin_lock&#43;0xe/0x50<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733210] RSP: 0018:ffff8821736d7a68&nbsp; EFLAGS: 00010286<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733213] RAX: 0000000000020000 RBX: 00000000000000b0 RCX: 0000000000000006<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733216] RDX: 0000000000000007 RSI: 0000000000000007 RDI: 00000000000000b0<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733220] RBP: ffff8821736d7a68 R08: 0000000000000000 R09: 0000000000000000<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733235] R10: 00000000000ee2c3 R11: 00000000000ee2c2 R12: 0000000000000000<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733239] R13: ffff884366877228 R14: 00000000ffffffea R15: 0000000000000008<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733243] FS:&nbsp; 0000000000000000(0000) GS:ffff8821b7a60000(0000) knlGS:0000000000000000<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733247] CS:&nbsp; 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733250] CR2: 00000000000000b0 CR3: 0000000001c0d000 CR4: 00000000001427e0<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733254] Stack:<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733256]&nbsp; ffff8821736d7a88 ffffffffa041f2e7 ffff8843668771b8 ffff884366877224<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733264]&nbsp; ffff8821736d7a98 ffffffffa041f322 ffff8821736d7aa8 ffffffffa029a072<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733268]&nbsp; ffff8821736d7ab8 ffffffffa0267077 ffff8821736d7b78 ffffffffa05ebbfa<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733272] Call Trace:<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733284]&nbsp; [&lt;ffffffffa041f2e7&gt;] dlm_print_one_lock_resource&#43;0x27/0x50 [ocfs2_dlm]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733290]&nbsp; [&lt;ffffffffa041f322&gt;] dlm_print_one_lock&#43;0x12/0x20 [ocfs2_dlm]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733294]&nbsp; [&lt;ffffffffa029a072&gt;] o2cb_dump_lksb&#43;0x12/0x20 [ocfs2_stack_o2cb]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733299]&nbsp; [&lt;ffffffffa0267077&gt;] ocfs2_dlm_dump_lksb&#43;0x17/0x20 [ocfs2_stackglue]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733335]&nbsp; [&lt;ffffffffa05ebbfa&gt;] ocfs2_drop_lock.isra.17&#43;0x3ca/0x6c0 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733346]&nbsp; [&lt;ffffffffa05e9f6b&gt;] ? ocfs2_init_mask_waiter&#43;0x3b/0x50 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733358]&nbsp; [&lt;ffffffffa05f3b02&gt;] ? ocfs2_extent_map_trunc&#43;0x112/0x140 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733369]&nbsp; [&lt;ffffffffa05ed493&gt;] ocfs2_drop_inode_locks&#43;0x73/0x260 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733379]&nbsp; [&lt;ffffffffa05f3b02&gt;] ? ocfs2_extent_map_trunc&#43;0x112/0x140 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733391]&nbsp; [&lt;ffffffffa05fe1ae&gt;] ocfs2_evict_inode&#43;0x18e/0x21d0 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733397]&nbsp; [&lt;ffffffff811ea9c5&gt;] ? __inode_wait_for_writeback&#43;0x65/0xc0<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733404]&nbsp; [&lt;ffffffff810adba0&gt;] ? wake_atomic_t_function&#43;0x40/0x40<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733410]&nbsp; [&lt;ffffffff811dc7a8&gt;] evict&#43;0xb8/0x1c0<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733412]&nbsp; [&lt;ffffffff811dd095&gt;] iput&#43;0x105/0x190<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733422]&nbsp; [&lt;ffffffffa05ded59&gt;] ocfs2_dentry_lock_put&#43;0x59/0x90 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733431]&nbsp; [&lt;ffffffffa05ea87a&gt;] ocfs2_dentry_post_unlock&#43;0x1a/0x20 [ocfs2]<br>
May&nbsp; 7 09:45:01 FC-07 kernel: [4185225.733442]&nbsp; [&lt;ffffffffa05f0891&gt;] ocfs2_process_blocked_lock&#43;0xa1/0x950 [ocfs2]<br>
</font></p>
</div>
</div>
</blockquote>
<span style="font-size:7.5pt; font-family:华文细黑; color:gray"><span lang="EN-US">-------------------------------------------------------------------------------------------------------------------------------------<br>
</span>本邮件及其附件含有杭州华三通信技术有限公司的保密信息,仅限于发送给上面地址中列出<span lang="EN-US"><br>
</span>的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、<span lang="EN-US"><br>
</span>或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本<span lang="EN-US"><br>
</span>邮件!<span lang="EN-US"><br>
</span></span><span lang="EN-US" style="font-size:7.5pt; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; color:gray">This e-mail and its attachments contain confidential information from H3C, which is
<br>
intended only for the person or entity whose address is listed above. Any use of the
<br>
information contained herein in any way (including, but not limited to, total or partial
<br>
disclosure, reproduction, or dissemination) by persons other than the intended <br>
recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender
<br>
by phone or email immediately and delete it!</span>
</body>
</html>