Re: [cifs:for-next 50/71] fs/cifs/file.c:3157:23-27: ERROR: invalid reference to the index variable of the iterator on line 3149

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 19 Sep 2012 06:25:08 -0700
Jeff Layton <jlayton@xxxxxxxxxx> wrote:

> On Wed, 19 Sep 2012 13:08:02 +0800
> Fengguang Wu <fengguang.wu@xxxxxxxxx> wrote:
> 
> > Hi Jeff,
> > 
> > FYI, there are new coccinelle warnings show up in
> > 
> > tree:   git://git.samba.org/sfrench/cifs-2.6.git for-next
> > head:   324b53bbcd1d9795062f00e92064296169c9b081
> > commit: a4a23914d0d1736eb6d98049d303d551131df83c [50/71] cifs: turn the pages list in cifs_readdata into an array
> > 
> > All coccinelle warnings:
> > 
> > + fs/cifs/file.c:3157:23-27: ERROR: invalid reference to the index variable of the iterator on line 3149
> > 
> > vim +3157 fs/cifs/file.c
> >   3147			rdata->marshal_iov = cifs_readpages_marshal_iov;
> >   3148	
> > > 3149			list_for_each_entry_safe(page, tpage, &tmplist, lru) {
> >   3150				list_del(&page->lru);
> >   3151				rdata->pages[rdata->nr_pages++] = page;
> >   3152			}
> >   3153	
> >   3154			rc = cifs_retry_async_readv(rdata);
> >   3155			if (rc != 0) {
> >   3156				for (i = 0; i < rdata->nr_pages; i++) {
> > > 3157					lru_cache_add_file(page);
> >   3158					unlock_page(page);
> >   3159					page_cache_release(page);
> >   3160				}
> >   3161				kref_put(&rdata->refcount, cifs_readdata_release);
> >   3162				break;
> >   3163			}
> >   3164	
> >   3165			kref_put(&rdata->refcount, cifs_readdata_release);
> >   3166		}
> >   3167	
> > 
> > ---
> > 0-DAY kernel build testing backend         Open Source Technology Centre
> > Fengguang Wu, Yuanhan Liu                              Intel Corporation
> 
> 
> Thanks Wu, good catch. I've got a fix that I'll push to Steve today.
> 

FWIW, here's the (trivial) patch to fix this. Steve, I've respun the
patch that introduced this bug and pushed it out to my cifs-next
branch. This should be the only difference.

You If you'd rather do a patch on top of your tree instead, let me
know...

---------------------------[snip]-----------------------------
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 1d43303..075f7cf 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -3280,6 +3280,7 @@ static int cifs_readpages(struct file *file, struct address_space *mapping,
 		rc = cifs_retry_async_readv(rdata);
 		if (rc != 0) {
 			for (i = 0; i < rdata->nr_pages; i++) {
+				page = rdata->pages[i];
 				lru_cache_add_file(page);
 				unlock_page(page);
 				page_cache_release(page);
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux