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
>
next prev parent reply other threads:[~2015-11-09 1:07 UTC|newest]
Thread overview: 16+ 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-09 23:44 ` Grant Grundler
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).