All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Vishnu Pratap Singh <vishnu.ps@samsung.com>
Cc: axboe@kernel.dk, akpm@linux-foundation.org,
	linux-kernel@vger.kernel.org, jmoyer@redhat.com,
	minchan@kernel.org, ngupta@vflare.org,
	sergey.senozhatsky.work@gmail.com, davem@davemloft.net,
	neilb@suse.com, ulf.hansson@linaro.org, tiwai@suse.de,
	hare@suse.de, ming.lei@canonical.com, jarod@redhat.com,
	viro@zeniv.linux.org.uk, tj@kernel.org, adrian.hunter@intel.com,
	jonathanh@nvidia.com, grundler@chromium.org,
	linux-ide@vger.kernel.org, linux-raid@vger.kernel.org,
	linux-mmc@vger.kernel.org, cpgs@samsung.com,
	vishu13285@gmail.com, pintu.k@samsung.com, rohit.kr@samsung.com
Subject: Re: [PATCH 5/8] zram: handle add_disk() & blk_register_region() return value
Date: Mon, 9 Nov 2015 10:07:05 +0900	[thread overview]
Message-ID: <20151109010705.GC471@swordfish> (raw)
In-Reply-To: <1446812535-10567-5-git-send-email-vishnu.ps@samsung.com>

On (11/06/15 17:52), Vishnu Pratap Singh wrote:
> This patch adds error handling for blk_register_region(),
> register_disk(), add_disk(), disk_alloc_events() & disk_add_events().
> add_disk() & register_disk() functions  error handling is very much
> needed as this is used mainly by many modules like mmc, zram, mtd, scsi etc.
> But there is no error handling and it may cause stability issues also.

hm... I came across "FIXME: error handling" comment in add_disk() some
time ago and after a quick google search I found this:
https://lkml.org/lkml/2007/7/24/207

>> The attached patch fixes the problem by changing the prototype of
>> add_disk() and register_disk() to return errors.

Al Viro wrote:

> This is bogus.  Just what would callers do with these error values?
> Ignore them silently?  Bail out?  Can't do - at that point disk just
> might have been opened already.  add_disk() is the point of no return;
> we are already past the last point where we could bail out.




>  drivers/block/z2ram.c         | 12 ++++++++++--
>  drivers/block/zram/zram_drv.c |  9 ++++++---

those are different drivers, split the patches (well, if add_disk()
change actually makes sense).


>  2 files changed, 16 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c
> index 968f9e5..85e841f 100644
> --- a/drivers/block/z2ram.c
> +++ b/drivers/block/z2ram.c
> @@ -364,12 +364,20 @@ z2_init(void)
>      sprintf(z2ram_gendisk->disk_name, "z2ram");
>  
>      z2ram_gendisk->queue = z2_queue;
> -    add_disk(z2ram_gendisk);
> -    blk_register_region(MKDEV(Z2RAM_MAJOR, 0), Z2MINOR_COUNT, THIS_MODULE,
> +    ret = add_disk(z2ram_gendisk);
> +    if (ret)
> +	goto out_add_disk;
> +
> +    ret = blk_register_region(MKDEV(Z2RAM_MAJOR, 0), Z2MINOR_COUNT, THIS_MODULE,
>  				z2_find, NULL, NULL);
> +    if (ret)
> +	goto out_blk_reg;

A separate nitpick. z2_init() coding styles need to be 'fixed'. So the
patch will not violate the kernel coding styles.

 ./scripts/checkpatch.pl
 WARNING: please, no spaces at the start of a line
 #113: FILE: drivers/block/z2ram.c:367:
 +    ret = add_disk(z2ram_gendisk);$

 WARNING: please, no spaces at the start of a line
 #114: FILE: drivers/block/z2ram.c:368:
 +    if (ret)$

 WARNING: please, no spaces at the start of a line
 #117: FILE: drivers/block/z2ram.c:371:
 +    ret = blk_register_region(MKDEV(Z2RAM_MAJOR, 0), Z2MINOR_COUNT,
 THIS_MODULE,$

 WARNING: please, no spaces at the start of a line
 #119: FILE: drivers/block/z2ram.c:373:
 +    if (ret)$

 total: 0 errors, 4 warnings, 50 lines checked


>  
>      return 0;
>  
> +out_blk_reg:
> +	del_gendisk(z2ram_gendisk);
> +out_add_disk:
>  out_queue:

Hm... a fall-through empty `out_add_disk' label?


	-ss

>      put_disk(z2ram_gendisk);
>  out_disk:
> diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
> index 81a557c..f3d7a49 100644
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -1261,14 +1261,16 @@ static int zram_add(void)
>  		zram->disk->queue->limits.discard_zeroes_data = 0;
>  	queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, zram->disk->queue);
>  
> -	add_disk(zram->disk);
> +	ret = add_disk(zram->disk);
> +	if (ret)
> +		goto out_free_disk;
>  
>  	ret = sysfs_create_group(&disk_to_dev(zram->disk)->kobj,
>  				&zram_disk_attr_group);
>  	if (ret < 0) {
>  		pr_err("Error creating sysfs group for device %d\n",
>  				device_id);
> -		goto out_free_disk;
> +		goto out_del_disk;
>  	}
>  	strlcpy(zram->compressor, default_compressor, sizeof(zram->compressor));
>  	zram->meta = NULL;
> @@ -1277,8 +1279,9 @@ static int zram_add(void)
>  	pr_info("Added device: %s\n", zram->disk->disk_name);
>  	return device_id;
>  
> -out_free_disk:
> +out_del_disk:
>  	del_gendisk(zram->disk);
> +out_free_disk:
>  	put_disk(zram->disk);

>  out_free_queue:
>  	blk_cleanup_queue(queue);
> -- 
> 1.9.1
> 

  reply	other threads:[~2015-11-09  1:06 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <437969438-9181-1-git-send-email-vishnu.ps@samsung.com>
2015-11-06 12:22 ` [PATCH 1/8] block/genhd.c: Add error handling Vishnu Pratap Singh
2015-11-06 12:22   ` [PATCH 2/8] mmc: handle add_disk() return value Vishnu Pratap Singh
2015-11-06 16:03     ` Ulf Hansson
2015-11-09  5:11     ` Vishnu Pratap Singh
2015-11-06 12:22   ` [PATCH 3/8] block/floppy.c: handle blk_register_region() " Vishnu Pratap Singh
2015-11-06 12:50     ` kbuild test robot
2015-11-06 12:50       ` kbuild test robot
2015-11-09  3:16     ` Vishnu Pratap Singh
2015-11-09 23:44     ` Grant Grundler
2015-11-10  3:25     ` [PATCH v2] " Vishnu Pratap Singh
2015-11-10  8:20       ` kbuild test robot
2015-11-10  8:20         ` kbuild test robot
2015-11-06 12:22   ` [PATCH 4/8] block/loop.c: handle add_disk() & " Vishnu Pratap Singh
2015-11-06 12:22   ` [PATCH 5/8] zram: " Vishnu Pratap Singh
2015-11-09  1:07     ` Sergey Senozhatsky [this message]
2015-11-06 12:22   ` [PATCH 6/8] md/md.c: handle " Vishnu Pratap Singh
2015-11-06 12:22   ` [PATCH 7/8] cdrom/gdrom.c: handle add_disk() " Vishnu Pratap Singh
2015-11-06 12:22   ` [PATCH 8/8] ide/ide-probe.c: handle blk_register_region() " Vishnu Pratap Singh
2015-11-10  3:33   ` [PATCH 1/8] block/genhd.c: Add error handling Al Viro
2015-11-10  3:40     ` Jens Axboe
2015-11-10 14:11       ` Jeff Moyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151109010705.GC471@swordfish \
    --to=sergey.senozhatsky.work@gmail.com \
    --cc=adrian.hunter@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=cpgs@samsung.com \
    --cc=davem@davemloft.net \
    --cc=grundler@chromium.org \
    --cc=hare@suse.de \
    --cc=jarod@redhat.com \
    --cc=jmoyer@redhat.com \
    --cc=jonathanh@nvidia.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=minchan@kernel.org \
    --cc=ming.lei@canonical.com \
    --cc=neilb@suse.com \
    --cc=ngupta@vflare.org \
    --cc=pintu.k@samsung.com \
    --cc=rohit.kr@samsung.com \
    --cc=tiwai@suse.de \
    --cc=tj@kernel.org \
    --cc=ulf.hansson@linaro.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=vishnu.ps@samsung.com \
    --cc=vishu13285@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.