瀏覽代碼

DLM: fix overflow dlm_cb_seq

dlm_cb_seq is 64 bits. If dlm_cb_seq overflows and returns to 0,
dlm_rem_lkb_callback() will not work properly.

Signed-off-by: Tadashi Miyauchi <miyauchi@toshiba-tops.co.jp>
Signed-off-by: Tsutomu Owa <tsutomu.owa@toshiba.co.jp>
Signed-off-by: David Teigland <teigland@redhat.com>
tsutomu.owa@toshiba.co.jp 8 年之前
父節點
當前提交
ccbbea0432
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      fs/dlm/ast.c

+ 2 - 0
fs/dlm/ast.c

@@ -181,6 +181,8 @@ void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status,
 
 
 	spin_lock(&dlm_cb_seq_spin);
 	spin_lock(&dlm_cb_seq_spin);
 	new_seq = ++dlm_cb_seq;
 	new_seq = ++dlm_cb_seq;
+	if (!dlm_cb_seq)
+		new_seq = ++dlm_cb_seq;
 	spin_unlock(&dlm_cb_seq_spin);
 	spin_unlock(&dlm_cb_seq_spin);
 
 
 	if (lkb->lkb_flags & DLM_IFL_USER) {
 	if (lkb->lkb_flags & DLM_IFL_USER) {