Some issues with the AT91 dataflash driver...

Haavard Skinnemoen hskinnemoen at atmel.com
Wed May 30 04:38:57 EDT 2007


On Wed, 30 May 2007 10:13:22 +0300
Artem Bityutskiy <dedekind at infradead.org> wrote:

> Thanks! Could you please try the below patch - it should help.

It does. No more messages, the GC thread stays alive and I can execute
binaries from the mount. Thanks!

Haavard

> >From f84ae9eae2d0b12cff2e0f5a490a3d732458b381 Mon Sep 17 00:00:00 2001  
> From: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
> Date: Wed, 30 May 2007 12:08:14 +0300
> Subject: [PATCH] JFFS2: fix readinode()
> 
> If we have already read enough bytes, no need to call read_more().
> 
> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy at nokia.com>
> ---
>  fs/jffs2/readinode.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c
> index 4884d5e..5663e8c 100644
> --- a/fs/jffs2/readinode.c
> +++ b/fs/jffs2/readinode.c
> @@ -1044,7 +1044,8 @@ static int jffs2_get_inode_nodes(struct jffs2_sb_info *c, struct jffs2_inode_inf
>  
>  		case JFFS2_NODETYPE_DIRENT:
>  
> -			if (JFFS2_MIN_NODE_HEADER < sizeof(struct jffs2_raw_dirent)) {
> +			if (JFFS2_MIN_NODE_HEADER < sizeof(struct jffs2_raw_dirent) &&
> +			    len < sizeof(struct jffs2_raw_dirent)) {
>  				err = read_more(c, ref, sizeof(struct jffs2_raw_dirent), &len, buf);
>  				if (unlikely(err))
>  					goto free_out;
> @@ -1058,7 +1059,8 @@ static int jffs2_get_inode_nodes(struct jffs2_sb_info *c, struct jffs2_inode_inf
>  
>  		case JFFS2_NODETYPE_INODE:
>  
> -			if (JFFS2_MIN_NODE_HEADER < sizeof(struct jffs2_raw_inode)) {
> +			if (JFFS2_MIN_NODE_HEADER < sizeof(struct jffs2_raw_inode) &&
> +			    len < sizeof(struct jffs2_raw_inode)) {
>  				err = read_more(c, ref, sizeof(struct jffs2_raw_inode), &len, buf);
>  				if (unlikely(err))
>  					goto free_out;
> @@ -1071,7 +1073,8 @@ static int jffs2_get_inode_nodes(struct jffs2_sb_info *c, struct jffs2_inode_inf
>  			break;
>  
>  		default:
> -			if (JFFS2_MIN_NODE_HEADER < sizeof(struct jffs2_unknown_node)) {
> +			if (JFFS2_MIN_NODE_HEADER < sizeof(struct jffs2_unknown_node) &&
> +			    len < sizeof(struct jffs2_unknown_node)) {
>  				err = read_more(c, ref, sizeof(struct jffs2_unknown_node), &len, buf);
>  				if (unlikely(err))
>  					goto free_out;
> -- 
> 1.5.0.6




More information about the linux-mtd mailing list