From: "Matias Bjørling" <mb@lightnvm.io>
To: "Dan Carpenter" <dan.carpenter@oracle.com>,
"Javier González" <jg@lightnvm.io>
Cc: linux-block@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: [PATCH] lightnvm: fix some error code in pblk-init.c
Date: Thu, 13 Apr 2017 21:43:40 +0200 [thread overview]
Message-ID: <d4c65d15-ace0-3fbf-8380-cfb6103eb8d6@lightnvm.io> (raw)
In-Reply-To: <20170413193512.GB591@mwanda>
On 04/13/2017 09:35 PM, Dan Carpenter wrote:
> There were a bunch of places in pblk_lines_init() where we didn't set an
> error code. And in pblk_writer_init() we accidentally return 1 instead
> of a correct error code, which would result in a Oops later.
>
> Fixes: 11a5d6fdf919 ("lightnvm: physical block device (pblk) target")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
> index 94653b1f1300..3996e4b8fb0e 100644
> --- a/drivers/lightnvm/pblk-init.c
> +++ b/drivers/lightnvm/pblk-init.c
> @@ -543,7 +543,7 @@ static int pblk_lines_init(struct pblk *pblk)
> long nr_bad_blks, nr_meta_blks, nr_free_blks;
> int bb_distance;
> int i;
> - int ret = 0;
> + int ret;
>
> lm->sec_per_line = geo->sec_per_blk * geo->nr_luns;
> lm->blk_per_line = geo->nr_luns;
> @@ -638,12 +638,16 @@ static int pblk_lines_init(struct pblk *pblk)
> }
>
> l_mg->bb_template = kzalloc(lm->sec_bitmap_len, GFP_KERNEL);
> - if (!l_mg->bb_template)
> + if (!l_mg->bb_template) {
> + ret = -ENOMEM;
> goto fail_free_meta;
> + }
>
> l_mg->bb_aux = kzalloc(lm->sec_bitmap_len, GFP_KERNEL);
> - if (!l_mg->bb_aux)
> + if (!l_mg->bb_aux) {
> + ret = -ENOMEM;
> goto fail_free_bb_template;
> + }
>
> bb_distance = (geo->nr_luns) * geo->sec_per_pl;
> for (i = 0; i < lm->sec_per_line; i += bb_distance)
> @@ -667,8 +671,10 @@ static int pblk_lines_init(struct pblk *pblk)
>
> pblk->lines = kcalloc(l_mg->nr_lines, sizeof(struct pblk_line),
> GFP_KERNEL);
> - if (!pblk->lines)
> + if (!pblk->lines) {
> + ret = -ENOMEM;
> goto fail_free_bb_aux;
> + }
>
> nr_free_blks = 0;
> for (i = 0; i < l_mg->nr_lines; i++) {
> @@ -682,8 +688,10 @@ static int pblk_lines_init(struct pblk *pblk)
> spin_lock_init(&line->lock);
>
> nr_bad_blks = pblk_bb_line(pblk, line);
> - if (nr_bad_blks < 0 || nr_bad_blks > lm->blk_per_line)
> + if (nr_bad_blks < 0 || nr_bad_blks > lm->blk_per_line) {
> + ret = -EINVAL;
> goto fail_free_lines;
> + }
>
> line->blk_in_line = lm->blk_per_line - nr_bad_blks;
> if (line->blk_in_line < lm->min_blk_line) {
> @@ -733,7 +741,7 @@ static int pblk_writer_init(struct pblk *pblk)
> pblk->writer_ts = kthread_create(pblk_write_ts, pblk, "pblk-writer-t");
> if (IS_ERR(pblk->writer_ts)) {
> pr_err("pblk: could not allocate writer kthread\n");
> - return 1;
> + return PTR_ERR(pblk->writer_ts);
> }
>
> return 0;
>
Thanks Dan. Applied for 4.12.
WARNING: multiple messages have this Message-ID (diff)
From: "Matias Bjørling" <mb@lightnvm.io>
To: "Dan Carpenter" <dan.carpenter@oracle.com>,
"Javier González" <jg@lightnvm.io>
Cc: linux-block@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: [PATCH] lightnvm: fix some error code in pblk-init.c
Date: Thu, 13 Apr 2017 19:43:40 +0000 [thread overview]
Message-ID: <d4c65d15-ace0-3fbf-8380-cfb6103eb8d6@lightnvm.io> (raw)
In-Reply-To: <20170413193512.GB591@mwanda>
On 04/13/2017 09:35 PM, Dan Carpenter wrote:
> There were a bunch of places in pblk_lines_init() where we didn't set an
> error code. And in pblk_writer_init() we accidentally return 1 instead
> of a correct error code, which would result in a Oops later.
>
> Fixes: 11a5d6fdf919 ("lightnvm: physical block device (pblk) target")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
> index 94653b1f1300..3996e4b8fb0e 100644
> --- a/drivers/lightnvm/pblk-init.c
> +++ b/drivers/lightnvm/pblk-init.c
> @@ -543,7 +543,7 @@ static int pblk_lines_init(struct pblk *pblk)
> long nr_bad_blks, nr_meta_blks, nr_free_blks;
> int bb_distance;
> int i;
> - int ret = 0;
> + int ret;
>
> lm->sec_per_line = geo->sec_per_blk * geo->nr_luns;
> lm->blk_per_line = geo->nr_luns;
> @@ -638,12 +638,16 @@ static int pblk_lines_init(struct pblk *pblk)
> }
>
> l_mg->bb_template = kzalloc(lm->sec_bitmap_len, GFP_KERNEL);
> - if (!l_mg->bb_template)
> + if (!l_mg->bb_template) {
> + ret = -ENOMEM;
> goto fail_free_meta;
> + }
>
> l_mg->bb_aux = kzalloc(lm->sec_bitmap_len, GFP_KERNEL);
> - if (!l_mg->bb_aux)
> + if (!l_mg->bb_aux) {
> + ret = -ENOMEM;
> goto fail_free_bb_template;
> + }
>
> bb_distance = (geo->nr_luns) * geo->sec_per_pl;
> for (i = 0; i < lm->sec_per_line; i += bb_distance)
> @@ -667,8 +671,10 @@ static int pblk_lines_init(struct pblk *pblk)
>
> pblk->lines = kcalloc(l_mg->nr_lines, sizeof(struct pblk_line),
> GFP_KERNEL);
> - if (!pblk->lines)
> + if (!pblk->lines) {
> + ret = -ENOMEM;
> goto fail_free_bb_aux;
> + }
>
> nr_free_blks = 0;
> for (i = 0; i < l_mg->nr_lines; i++) {
> @@ -682,8 +688,10 @@ static int pblk_lines_init(struct pblk *pblk)
> spin_lock_init(&line->lock);
>
> nr_bad_blks = pblk_bb_line(pblk, line);
> - if (nr_bad_blks < 0 || nr_bad_blks > lm->blk_per_line)
> + if (nr_bad_blks < 0 || nr_bad_blks > lm->blk_per_line) {
> + ret = -EINVAL;
> goto fail_free_lines;
> + }
>
> line->blk_in_line = lm->blk_per_line - nr_bad_blks;
> if (line->blk_in_line < lm->min_blk_line) {
> @@ -733,7 +741,7 @@ static int pblk_writer_init(struct pblk *pblk)
> pblk->writer_ts = kthread_create(pblk_write_ts, pblk, "pblk-writer-t");
> if (IS_ERR(pblk->writer_ts)) {
> pr_err("pblk: could not allocate writer kthread\n");
> - return 1;
> + return PTR_ERR(pblk->writer_ts);
> }
>
> return 0;
>
Thanks Dan. Applied for 4.12.
next prev parent reply other threads:[~2017-04-13 19:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-13 19:35 [PATCH] lightnvm: fix some error code in pblk-init.c Dan Carpenter
2017-04-13 19:35 ` Dan Carpenter
2017-04-13 19:43 ` Matias Bjørling [this message]
2017-04-13 19:43 ` Matias Bjørling
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=d4c65d15-ace0-3fbf-8380-cfb6103eb8d6@lightnvm.io \
--to=mb@lightnvm.io \
--cc=dan.carpenter@oracle.com \
--cc=jg@lightnvm.io \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-block@vger.kernel.org \
/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.