|
@@ -233,9 +233,26 @@ static int sort_nodes(struct ubifs_info *c, struct ubifs_scan_leb *sleb,
|
|
|
list_for_each_entry_safe(snod, tmp, &sleb->nodes, list) {
|
|
|
int err;
|
|
|
|
|
|
- ubifs_assert(snod->type != UBIFS_IDX_NODE);
|
|
|
- ubifs_assert(snod->type != UBIFS_REF_NODE);
|
|
|
- ubifs_assert(snod->type != UBIFS_CS_NODE);
|
|
|
+ ubifs_assert(snod->type == UBIFS_INO_NODE ||
|
|
|
+ snod->type == UBIFS_DATA_NODE ||
|
|
|
+ snod->type == UBIFS_DENT_NODE ||
|
|
|
+ snod->type == UBIFS_XENT_NODE ||
|
|
|
+ snod->type == UBIFS_TRUN_NODE);
|
|
|
+
|
|
|
+ if (snod->type != UBIFS_INO_NODE &&
|
|
|
+ snod->type != UBIFS_DATA_NODE &&
|
|
|
+ snod->type != UBIFS_DENT_NODE &&
|
|
|
+ snod->type != UBIFS_XENT_NODE) {
|
|
|
+ /* Probably truncation node, zap it */
|
|
|
+ list_del(&snod->list);
|
|
|
+ kfree(snod);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ ubifs_assert(key_type(c, &snod->key) == UBIFS_DATA_KEY ||
|
|
|
+ key_type(c, &snod->key) == UBIFS_INO_KEY ||
|
|
|
+ key_type(c, &snod->key) == UBIFS_DENT_KEY ||
|
|
|
+ key_type(c, &snod->key) == UBIFS_XENT_KEY);
|
|
|
|
|
|
err = ubifs_tnc_has_node(c, &snod->key, 0, sleb->lnum,
|
|
|
snod->offs, 0);
|