On Tue, 13 Aug 2013 17:50:33 +0400, Vyacheslav Dubeyko wrote: > From: Vyacheslav Dubeyko <[email protected]> > Subject: [PATCH v3 1/2] nilfs2: remove double bio_put() in > nilfs_end_bio_write() for BIO_EOPNOTSUPP error > > This patch removes double call of bio_put() in nilfs_end_bio_write() > for the case of BIO_EOPNOTSUPP error detection. The issue was found > by Dan Carpenter and he suggests first version of the fix too. > > Reported-by: Dan Carpenter <[email protected]> > Signed-off-by: Vyacheslav Dubeyko <[email protected]> > CC: Ryusuke Konishi <[email protected]>
Acked-by: Ryusuke Konishi <[email protected]> Tested-by: Ryusuke Konishi <[email protected]> I tested this patch by inserting a pseudo EOPNOTSUPP error, and this actually fixed a crach "kernel BUG at fs/bio.c:498!" due to reference count underflow of bio_put() that nilfs_end_bio_write() induced. Andrew, please pick up this bug-fix preferably for this cycle. Thanks, Ryusuke Konishi > --- > fs/nilfs2/segbuf.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/fs/nilfs2/segbuf.c b/fs/nilfs2/segbuf.c > index dc9a913..5bacf46 100644 > --- a/fs/nilfs2/segbuf.c > +++ b/fs/nilfs2/segbuf.c > @@ -345,8 +345,7 @@ static void nilfs_end_bio_write(struct bio *bio, int err) > > if (err == -EOPNOTSUPP) { > set_bit(BIO_EOPNOTSUPP, &bio->bi_flags); > - bio_put(bio); > - /* to be detected by submit_seg_bio() */ > + /* to be detected by nilfs_segbuf_submit_bio() */ > } > > if (!uptodate) > -- > 1.7.9.5 > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in > the body of a message to [email protected] > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
