Thread (2 messages) 2 messages, 2 authors, 2017-09-05

Re: [PATCH] bcache: remove problematic code block from register_bcache()

From: Coly Li <hidden>
Date: 2017-09-05 08:03:51

On 2017/9/5 下午3:10, Coly Li wrote:
quoted hunk ↗ jump to hunk
There is a leak of bdev reference in register_bcache(), and Jan Kara
posted a patch to fix it. Discussion happened on bcache mailing list,
Christoph Hellwig pointed out that whole chunk of code where the bdev
reference leak lied was problematic,

	"adding a lookup_bdev and resulting mess just for a
	 slightly different error message is just insane"

This patch jsut removes whole chunk of the problematic code, of cause
the leak of bdev reference is removed too.

Signed-off-by: Coly Li <redacted>
Cc: Jan Kara <jack@suse.cz>
Cc: Christoph Hellwig <hch@infradead.org>
---
 drivers/md/bcache/super.c | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
index 8352fad765f6..85262f2628fb 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -1955,20 +1955,8 @@ static ssize_t register_bcache(struct kobject *k, struct kobj_attribute *attr,
 	bdev = blkdev_get_by_path(strim(path),
 				  FMODE_READ|FMODE_WRITE|FMODE_EXCL,
 				  sb);
-	if (IS_ERR(bdev)) {
-		if (bdev == ERR_PTR(-EBUSY)) {
-			bdev = lookup_bdev(strim(path));
-			mutex_lock(&bch_register_lock);
-			if (!IS_ERR(bdev) && bch_is_open(bdev))
-				err = "device already registered";
-			else
-				err = "device busy";
-			mutex_unlock(&bch_register_lock);
-			if (attr == &ksysfs_register_quiet)
-				goto out;
-		}
+	if (IS_ERR(bdev))
 		goto err;
-	}
 
 	err = "failed to set blocksize";
 	if (set_blocksize(bdev, 4096))
Hi Jan and Christoph,

There are other three functions only referenced in the above chunk of code,
- bch_is_open()
- bch_is_open_cache()
- bch_is_open_backing()
they should be removed as well.

So you may ignore this email, an update version of this patch will be
posted to linux-bache and linux-block mailing lists for review.

Thanks.

-- 
Coly Li
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help