瀏覽代碼

bcache: Fix a null ptr deref in journal replay

Signed-off-by: Kent Overstreet <kmo@daterainc.com>
Kent Overstreet 11 年之前
父節點
當前提交
65ddf45a31
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      drivers/md/bcache/journal.c

+ 5 - 1
drivers/md/bcache/journal.c

@@ -287,9 +287,13 @@ void bch_journal_mark(struct cache_set *c, struct list_head *list)
 		     k < bset_bkey_last(&i->j);
 		     k < bset_bkey_last(&i->j);
 		     k = bkey_next(k)) {
 		     k = bkey_next(k)) {
 			unsigned j;
 			unsigned j;
+			struct bucket *g;
 
 
 			for (j = 0; j < KEY_PTRS(k); j++) {
 			for (j = 0; j < KEY_PTRS(k); j++) {
-				struct bucket *g = PTR_BUCKET(c, k, j);
+				if (!ptr_available(c, k, j))
+					continue;
+
+				g = PTR_BUCKET(c, k, j);
 				atomic_inc(&g->pin);
 				atomic_inc(&g->pin);
 
 
 				if (g->prio == BTREE_PRIO &&
 				if (g->prio == BTREE_PRIO &&