diff options
| -rw-r--r-- | fs/jffs2/jffs2_1pass.c | 5 | ||||
| -rw-r--r-- | fs/jffs2/jffs2_private.h | 1 | 
2 files changed, 5 insertions, 1 deletions
| diff --git a/fs/jffs2/jffs2_1pass.c b/fs/jffs2/jffs2_1pass.c index 4e49a0566..be7c1a190 100644 --- a/fs/jffs2/jffs2_1pass.c +++ b/fs/jffs2/jffs2_1pass.c @@ -765,7 +765,10 @@ jffs2_1pass_read_inode(struct b_lists *pL, u32 inode, char *dest)  					put_fl_mem(jNode, pL->readbuf);  					continue;  				} -				if (!data_crc(jNode)) { +				if (b->datacrc == CRC_UNKNOWN) +					b->datacrc = data_crc(jNode) ? +						CRC_OK : CRC_BAD; +				if (b->datacrc == CRC_BAD) {  					put_fl_mem(jNode, pL->readbuf);  					continue;  				} diff --git a/fs/jffs2/jffs2_private.h b/fs/jffs2/jffs2_private.h index 3633deaaf..658b32521 100644 --- a/fs/jffs2/jffs2_private.h +++ b/fs/jffs2/jffs2_private.h @@ -7,6 +7,7 @@  struct b_node {  	u32 offset;  	struct b_node *next; +	enum { CRC_UNKNOWN = 0, CRC_OK, CRC_BAD } datacrc;  };  struct b_list { |