Skip to contentSkip to conversation

ocfs2/dlm: don't access beyond bitmap size

PATCH New Wengang Wang 3 participants 3 messages Jun 30, 2010 – Jul 12, 2010 OCFS2

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ocfs2/dlm: don't access beyond bitmap size

dlm->recovery_map is defined as

	unsigned long recovery_map[BITS_TO_LONGS(O2NM_MAX_NODES)];

We should treat O2NM_MAX_NODES as the bit map size in bits.
This patches fixes a bit operation that takes O2NM_MAX_NODES + 1 as bitmap size.

---
 fs/ocfs2/dlm/dlmrecovery.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
fs/ocfs2/dlm/dlmrecovery.c +1 -1
index f8b75ce..9dfaac7 100644
@@ -463,7 +463,7 @@ static int dlm_do_recovery(struct dlm_ctxt *dlm)
 	if (dlm->reco.dead_node == O2NM_INVALID_NODE_NUM) {
 		int bit;
 
-		bit = find_next_bit (dlm->recovery_map, O2NM_MAX_NODES+1, 0);
+		bit = find_next_bit (dlm->recovery_map, O2NM_MAX_NODES, 0);
 		if (bit >= O2NM_MAX_NODES || bit < 0)
 			dlm_set_reco_dead_node(dlm, O2NM_INVALID_NODE_NUM);
 		else
Signature · 1 line
1.6.6.1
#1 lore raw

PATCH 1/1 ocfs2/dlm: don't access beyond bitmap size

Quoted 25 lines · Wengang Wang

dlm->recovery_map is defined as

	unsigned long recovery_map[BITS_TO_LONGS(O2NM_MAX_NODES)];

We should treat O2NM_MAX_NODES as the bit map size in bits.
This patches fixes a bit operation that takes O2NM_MAX_NODES + 1 as bitmap size.

---
  fs/ocfs2/dlm/dlmrecovery.c |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
fs/ocfs2/dlm/dlmrecovery.c +1 -1
index f8b75ce..9dfaac7 100644
@@ -463,7 +463,7 @@ static int dlm_do_recovery(struct dlm_ctxt *dlm)
  	if (dlm->reco.dead_node == O2NM_INVALID_NODE_NUM) {
  		int bit;
 
-		bit = find_next_bit (dlm->recovery_map, O2NM_MAX_NODES+1, 0);
+		bit = find_next_bit (dlm->recovery_map, O2NM_MAX_NODES, 0);
  		if (bit>= O2NM_MAX_NODES || bit<  0)
  			dlm_set_reco_dead_node(dlm, O2NM_INVALID_NODE_NUM);
  		else
#2 lore raw

PATCH 1/1 ocfs2/dlm: don't access beyond bitmap size

In reply to Wengang Wang
Quoted 7 lines · Wengang Wang

dlm->recovery_map is defined as

	unsigned long recovery_map[BITS_TO_LONGS(O2NM_MAX_NODES)];

We should treat O2NM_MAX_NODES as the bit map size in bits.
This patches fixes a bit operation that takes O2NM_MAX_NODES + 1 as bitmap size.

This patch is now in the 'fixes' branch of ocfs2.git.

Joel

Signature · 8 lines
 The zen have a saying:
 "When you learn how to listen, ANYONE can be your teacher."

Joel Becker
Consulting Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127