diff --git a/[refs] b/[refs] index c3644cd96578..26ab5d980b0f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e2baf4ed168589af8224d51f0ac50e65bcdee3f6 +refs/heads/master: ab012ebf9ebb5f3392e74c1666e7473b8567aeb0 diff --git a/trunk/fs/jffs2/readinode.c b/trunk/fs/jffs2/readinode.c index 7b363786c2d2..12e83f67eee4 100644 --- a/trunk/fs/jffs2/readinode.c +++ b/trunk/fs/jffs2/readinode.c @@ -210,7 +210,8 @@ static void jffs2_kill_tn(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info * * offset, and the one with the smallest length will come first in the * ordering. * - * Returns 0 if the node was handled (including marking it obsolete) + * Returns 0 if the node was inserted + * 1 if the node is obsolete (because we can't mark it so yet) * < 0 an if error occurred */ static int jffs2_add_tn_to_tree(struct jffs2_sb_info *c, @@ -571,7 +572,8 @@ static struct jffs2_raw_node_ref *jffs2_first_valid_node(struct jffs2_raw_node_r * Helper function for jffs2_get_inode_nodes(). * It is called every time an directory entry node is found. * - * Returns: 0 on success; + * Returns: 0 on succes; + * 1 if the node should be marked obsolete; * negative error code on failure. */ static inline int read_direntry(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref, @@ -678,7 +680,8 @@ static inline int read_direntry(struct jffs2_sb_info *c, struct jffs2_raw_node_r * Helper function for jffs2_get_inode_nodes(). * It is called every time an inode node is found. * - * Returns: 0 on success (possibly after marking a bad node obsolete); + * Returns: 0 on success; + * 1 if the node should be marked obsolete; * negative error code on failure. */ static inline int read_dnode(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref, @@ -687,7 +690,7 @@ static inline int read_dnode(struct jffs2_sb_info *c, struct jffs2_raw_node_ref { struct jffs2_tmp_dnode_info *tn; uint32_t len, csize; - int ret = 0; + int ret = 1; uint32_t crc; /* Obsoleted. This cannot happen, surely? dwmw2 20020308 */ @@ -716,9 +719,8 @@ static inline int read_dnode(struct jffs2_sb_info *c, struct jffs2_raw_node_ref /* Sanity checks */ if (unlikely(je32_to_cpu(rd->offset) > je32_to_cpu(rd->isize)) || unlikely(PAD(je32_to_cpu(rd->csize) + sizeof(*rd)) != PAD(je32_to_cpu(rd->totlen)))) { - JFFS2_WARNING("inode node header CRC is corrupted at %#08x\n", ref_offset(ref)); - jffs2_dbg_dump_node(c, ref_offset(ref)); - jffs2_mark_node_obsolete(c, ref); + JFFS2_WARNING("inode node header CRC is corrupted at %#08x\n", ref_offset(ref)); + jffs2_dbg_dump_node(c, ref_offset(ref)); goto free_out; } @@ -773,7 +775,6 @@ static inline int read_dnode(struct jffs2_sb_info *c, struct jffs2_raw_node_ref if (len >= csize && unlikely(tn->partial_crc != je32_to_cpu(rd->data_crc))) { JFFS2_NOTICE("wrong data CRC in data node at 0x%08x: read %#08x, calculated %#08x.\n", ref_offset(ref), tn->partial_crc, je32_to_cpu(rd->data_crc)); - jffs2_mark_node_obsolete(c, ref); goto free_out; } @@ -853,6 +854,7 @@ static inline int read_dnode(struct jffs2_sb_info *c, struct jffs2_raw_node_ref * It is called every time an unknown node is found. * * Returns: 0 on success; + * 1 if the node should be marked obsolete; * negative error code on failure. */ static inline int read_unknown(struct jffs2_sb_info *c, struct jffs2_raw_node_ref *ref, struct jffs2_unknown_node *un) @@ -1086,7 +1088,10 @@ static int jffs2_get_inode_nodes(struct jffs2_sb_info *c, struct jffs2_inode_inf } err = read_unknown(c, ref, &node->u); - if (unlikely(err)) + if (err == 1) { + jffs2_mark_node_obsolete(c, ref); + break; + } else if (unlikely(err)) goto free_out; } diff --git a/trunk/include/asm-mips/mach-ip32/dma-coherence.h b/trunk/include/asm-mips/mach-ip32/dma-coherence.h index c3f9a6a20eb0..a5511ebb2d53 100644 --- a/trunk/include/asm-mips/mach-ip32/dma-coherence.h +++ b/trunk/include/asm-mips/mach-ip32/dma-coherence.h @@ -6,8 +6,8 @@ * Copyright (C) 2006 Ralf Baechle * */ -#ifndef __ASM_MACH_IP35_DMA_COHERENCE_H -#define __ASM_MACH_IP35_DMA_COHERENCE_H +#ifndef __ASM_MACH_IP32_DMA_COHERENCE_H +#define __ASM_MACH_IP32_DMA_COHERENCE_H #include @@ -69,4 +69,4 @@ static inline int plat_device_is_coherent(struct device *dev) return 0; /* IP32 is non-cohernet */ } -#endif /* __ASM_MACH_IP35_DMA_COHERENCE_H */ +#endif /* __ASM_MACH_IP32_DMA_COHERENCE_H */